Załóżmy, że mam XML tak:Jak wcięcia atrybutów, gdy prettyprinting xml w 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>
Pierwsza nazwa elementu ze wszystkimi jego atrybutami wszystkich pojawiających się na jednej linii.
Widziałem jak całkiem wydrukować drzewa elementów, używając lxml, z kodem tak:
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'))
... ale używając, że w jednym wierszu pojawia każdy element.
Czy istnieje magiczne zaklęcie informujące ładną drukarkę o wstawieniu nowych linii między atrybutami elementu, aby np. Długość linii nie przekraczała 80 znaków?
Chciałbym wynik wyglądać mniej więcej tak:
<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: nie chcę uciekać się do subprocess
i xmllint