Ich habe ein Skript geschrieben, das alle XML-Dateien im aktuellen Verzeichnis im XML-Format ausgibt, aber ich kann nicht herausfinden, wie die xmlns-Attribute zum Level-Tag. Der Ausgang I zu bekommen ist:Python: Hinzufügen von XML-Schemaattributen mit lxml
<?xml version='1.0' encoding='utf-8'?>
<databaseChangeLog
xmlns="http://www.host.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.host.org/2001/XMLSchema-instance"
xsi:schemaLocation="www.host.org/xml/ns/dbchangelog">
<include file="cats.xml"/>
<include file="dogs.xml"/>
<include file="fish.xml"/>
<include file="meerkats.xml"/>
</databaseChangLog>
Hier ist jedoch die Ausgabe erhalte ich:
<?xml version='1.0' encoding='utf-8'?>
<databaseChangeLog>
<include file="cats.xml"/>
<include file="dogs.xml"/>
<include file="fish.xml"/>
<include file="meerkats.xml"/>
</databaseChangLog>
Hier ist mein Skript:
import lxml.etree
import lxml.builder
import glob
E = lxml.builder.ElementMaker()
ROOT = E.databaseChangeLog
DOC = E.include
# grab all the xml files
files = [DOC(file=f) for f in glob.glob("*.xml")]
the_doc = ROOT(*files)
str = lxml.etree.tostring(the_doc, pretty_print=True, xml_declaration=True, encoding='utf-8')
print str
ich einige gefunden habe online Beispiele für das explizite Setzen von Namespace-Attributen, here und here, aber um ehrlich zu sein, gingen sie ein wenig über meinen Kopf, als ich gerade erst anfing. Gibt es eine andere Möglichkeit, diese xmlns-Attribute zum databaseChangeLog-Tag hinzuzufügen?
, dass dank arbeitete so viel! Würdest du zufällig wissen, wie man die Ausgabe formatiert, ähnlich wie in meiner oben erwünschten Ausgabe? Ich dachte pretty_print könnte dabei helfen, aber es scheint nicht zu helfen :( – user1420913
Entschuldigung, ich kenne keinen robusten Weg, das zu tun. – unutbu
Kein Problem, danke für Ihre Hilfe :) – user1420913