Supponiamo che io sono XML come questo:Come indentare gli attributi in quando prettyprinting xml in python?
<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>
Il primo nome elemento con tutti i suoi attributi appaiono tutti su una sola riga.
ho visto come stampare abbastanza l'albero elemento, utilizzando lxml, con codice come questo:
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'))
... ma usando che, ogni elemento appare su una riga.
Esiste un magico incantesimo per dire alla graziosa stampante di inserire nuove linee tra gli attributi dell'elemento in modo che, ad esempio, la lunghezza della linea non superi 80 caratteri?
vorrei il risultato simile a questo:
<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: io non voglio ricorrere a subprocess
e xmllint