Angenommen, ich XML wie diese:Wie können Attribute in Python in Prettyprinting von XML eingerückt werden?
<graph label="Test" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cy="http://www.cytoscape.org" xmlns="http://www.cs.rpi.edu/XGMML" directed="1">
<foo>...</foo>
</graph>
Der erste Element Name mit all seinen Attributen in einer Zeile angezeigt.
Ich habe gesehen, wie schön das Element Baum zu drucken, mit lxml, mit Code wie folgt:
from lxml import etree
...
def prettyPrintXml(filePath):
assert filePath is not None
parser = etree.XMLParser(resolve_entities=False, remove_blank_text=True,
strip_cdata=False)
document = etree.parse(filePath, parser)
print(etree.tostring(document, pretty_print=True, encoding='utf-8'))
... aber mit, dass jedes Element in einer Zeile erscheint.
Gibt es eine magische Beschwörung, um dem hübschen Drucker zu sagen, dass er zwischen den Elementattributen Zeilenumbrüche einfügen soll, so dass die Zeilenlänge beispielsweise 80 Zeichen nicht überschreitet?
ich das Ergebnis möchte etwas wie folgt aussehen:
<graph label="Test"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cy="http://www.cytoscape.org"
xmlns="http://www.cs.rpi.edu/XGMML" directed="1">
<foo>...</foo>
</graph>
ps: Ich will nicht zu subprocess
greifen und xmllint