現在のディレクトリ内のすべての.xmlファイルをxml形式で出力するスクリプトを作成しましたが、xmlns属性を最上位タグに追加する方法がわかりません。取得したい出力は次のとおりです。
<?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>
ただし、これが私が得ている出力です:
<?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>
これが私のスクリプトです:
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
こことここで、名前空間属性を明示的に設定するいくつかの例をオンラインで見つけましたが、正直なところ、私が始めたばかりなので、それらは私の頭を少し超えました。これらのxmlns属性をdatabaseChangeLogタグに追加する別の方法はありますか?