使用ElementT输出“未使用的”XML命名空间

2024-06-25 07:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3.2的xml.etree.ElementTree,并试图生成如下的XML:

<XnaContent xmlns:data="Model.Data">
    <Asset Type="data:MyData">
        ...

我无法控制格式(它是XNA)。请注意,dataXML命名空间实际上从未用于限定元素或属性,而是用于将属性值限定为XNA。我的代码如下:

^{pr2}$

但是,输出看起来像(我打印得很好):

<XnaContent>
    <Asset Type="data:MyData">
        ...
    </Asset>
</XnaContent>

如何获得输出中包含的dataXML命名空间?在


Tags: data属性type空间xmlasset命名etree
2条回答
>>>print ET.tostring(doc, pretty_print=True)
<XnaContent>
  <Asset Type="data:MyData"/>
  <Asset Type="data:MyData"/>
</XnaContent>
>>> tree=ET.ElementTree(doc)
>>> root=tree.getroot()
>>> nsmap=root.nsmap
>>> nsmap['data']="ModelData"
>>> new_root = ET.Element(root.tag, nsmap=nsmap)
>>> print ET.tostring(new_root, pretty_print=True)
<XnaContent xmlns:data="ModelData"/>
>>> new_root[:] = root[:]
>>> print ET.tostring(new_root, pretty_print=True)
<XnaContent xmlns:data="ModelData">
  <Asset Type="data:MyData"/>
  <Asset Type="data:MyData"/>
</XnaContent>
import xml.etree.ElementTree as ET
content = '''
<XnaContent>
  <Asset Type="data:MyData"/>
  <Asset Type="data:MyData"/>
</XnaContent>'''
doc = ET.fromstring(content)
ET.register_namespace('data','ModelData')
tree = ET.ElementTree(doc)
root = tree.getroot()
root.tag = '{ModelData}XnaContent'
print(ET.tostring(root, method = 'xml'))

收益率

^{pr2}$

相关问题 更多 >