Um Ihre Frage klar keine zu beantworten, können Sie nicht eine XML-Datei mit <
oder >
in einem seiner Wertfelder haben, da das XML-Format diese Zeichen verwendet die Eltern-Kind-Elemente zu bezeichnen, z.B. <note>
, <to>
, <from>
usw.
Erweiterung auf meine Antwort: Wenn ein Python-Skript <
oder >
die XML library Verwendung schreibt, übersetzt die Bibliothek sie <
oder >
sind. Ich glaube nicht, dass dies mit dieser Bibliothek möglich ist, da es tatsächlich die <
und >
Zeichen sowie die Character Entity References ausfiltert. Dies ist sinnvoll - die XML-Bibliothek verhindert, dass Sie die Syntax für die übergeordneten Objektfelder xml.etree.cElementTree.Element
oder ein beliebiges untergeordnetes Objekt unterbrechen. Verwenden Sie zum Beispiel in diesen great answer den Codeblock zu experimentieren:
import xml.etree.cElementTree as ET
root = ET.Element("root")
doc = ET.SubElement(root, "doc")
ET.SubElement(doc, "field1", name="blah").text = "some <value>"
ET.SubElement(doc, "field2", name="asdfasd").text = "some <other value>"
tree = ET.ElementTree(root)
tree.write("filename.xml")
Dies ergibt <root><doc><field1 name="blah">some <value></field1><field2 name="asdfasd">some <other value></field2></doc></root>
.
Verhübsch-Schlechterung es:
<root>
<doc>
<field1 name="blah">
some <value>
</field1>
<field2 name="asdfasd">
some <other value>
</field2>
</doc>
</root>
Allerdings gibt es nichts hindert Sie daran, das Hinzufügen dieser Zeichen manuell: in der XML-Datei zu lesen und wieder schreiben sie, das Hinzufügen von Text, auch wenn es enthält <
oder >
. Wenn Sie jedoch eine korrekte XML-Datei benötigen, müssen Sie sicherstellen, dass diese Zeichen nur in Kommentarfeldern verwendet werden.
Für Ihr spezielles Problem, Sie in den Zeilen von der Client-XML-Dateien lesen kann, dann entfernen Sie entweder die <
und >
Zeichen oder, wenn der Kunde sie benötigt, um sie zu einer kommentierten Teil der Linie bewegen. Teil der Herausforderung ist, dass Sie in den <note>,
`, etc. Teile der Datei verlassen müssen ... Dies ist eine Herausforderung, aber es wäre möglich!
Das folgende ist, was ich erwarten würde, dass das Ergebnis aussehen wird.
Wenn Sie den Client nicht bitten möchten, die Datei zu reparieren, liegt die offensichtliche Lösung darin, dass Sie die Datei selbst reparieren. Wenn es sich um eine einmalige Sache handelt, bearbeiten Sie sie und ersetzen Sie die reservierten Zeichen durch die vordefinierten Entity-Referenzen. Wenn dies wiederholt auftritt, schreiben Sie ein sed-Skript oder das Äquivalent in Ihren Batch-Editor Ihrer Wahl, um die Änderung vorzunehmen. (Wenn Sie keinen Batch-Editor Ihrer Wahl haben und Probleme mit diesem Problem auftreten, sollten Sie sich mit den Batch-Editoren vertraut machen und bei eins gut werden.) –