Ich habe ein Lua-Programm, das Daten von einem externen Gerät verbraucht. Das Gerät kehrt fehlerhafte XML, das wie folgt aussieht:Beheben von schlechtem XML in Lua
<element attribute1="value1" attribute2="value2" attribute3=" m "value3" " attribute4="value4" />
Insbesondere einige der Felder sind vom Benutzer bearbeitet werden und Elemente enthalten denkbar könnten, die maskiert werden sollen, aber nicht sind. Hoffentlich kann ich den Code, der diese Nachrichten erzeugt, reparieren lassen, aber bis dahin brauche ich einen Workaround, um zu versuchen, das Richtige zu tun. Die Nachrichten scheinen in einem festen Format mit Attributen immer in der gleichen Reihenfolge und immer vorhanden ist (soweit ich das beurteilen kann) zu kommen, so konnte ich ein sehr restriktiven Muster Spiel wie verwenden:
string.match(str, 'attribute1="(.*)" attribute2="(.*)" attribute3="(.*)" attribute4="(.*)")
aber dies scheint wirklich icky und wird natürlich brechen, wenn sie sich entscheiden, das Format zu ändern (ohne das Problem zu beheben.
Irgendwelche Vorschläge für alternative Lösungen? Ich bin hauptsächlich besorgt über die Suche nach "'s, die in & umgewandelt werden müssen;' s. Andere XML-Entitäten, um die ich mich nicht so sehr sorge.
Ich denke, für meine Situation werde ich besser dran sein, wenn ich zuerst die Regex mache und dann zurückfalle, wenn es scheitert (und eine Warnung ausspreche). Ich führe nur das XML weiter, verwende es nicht, also möchte ich es nur für den Code interessant machen, der es später tatsächlich nutzt. – Dolphin