Pythonを使用してXMLファイルを作成しようとしています。以下のような XML ファイルを作成したいと思います。
<?xml version="1.0" encoding="UTF-8"?>
<toplevel>
<ChildLevel
xmlns=http://schemas.dmtf.org/ovf/environment/1>
<Property key="username1" value="test"/>
<Property key="username2" value="testuser"/>
</ChildLevel>
</toplevel>
以下の python スクリプトを記述し、XML ファイルを生成しました。しかし、xml ファイルの作成中に名前空間を指定するにはどうすればよいですか。
from lxml import etree
from array import array
val_ = []
val_.append("username1## test ")
val_.append("username2## testuser ")
xml__= etree.Element('toplevel')
product_=etree.SubElement(ovf_env_xml, " ChildLevel")
for keyval_ in val_:
keyvalue_ = keyval_.split("##")
property_ = etree.SubElement(product_, 'Property')
property_.set("key", keyvalue_[0])
property_.set("value", keyvalue_[1])
etree.ElementTree(xml__).write("/tmp/test.xml", pretty_print=True)
出力 XML ファイル:
<toplevel>
<ChildLevel>
<Property key="username1" value="test"/>
<Property key="username2" value="testuser"/>
</ChildLevel>
</toplevel
XML ファイルに複数の名前空間を追加する必要があります。
申し訳ありません..さらにいくつかのブログを検索した後、解決策を得ました..Pythonスクリプトで以下の変更を行いました。
nsmap = {
None: "urn:iso:std:iso:2013:008.001.02",
'xsi': "http://www.w3.org/2001/XMLSchema-instance",
}
xml__= etree.Element('toplevel',nsmap=nsmap)