如何向元素添加 xmi:version="2.0" 属性
How to add xmi:version="2.0" attribute to an element
我正在创建一个 xml 文件。我完成了根元素的创建,并且能够定义 xml 声明。但我需要创建花药标签,它看起来像
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:TalendProperties="http://www.talend.org/properties">
# i am unable to replicate the above
### some subelements..
</xmi:XMI>
我已完成添加 xmlns URI,但无法获取 xmi:version="2.0"。
我不熟悉 XML,所以感到困惑,阅读了有关命名空间的所有内容,但不太了解。有人可以告诉我如何做到这一点或分享相关的网络链接。那会很有帮助。因为我在互联网上发现了大部分 XML 解析内容,但 XML 生成的资源很少。
xmlns_uris_dict = {'xmi':'http://..', 'subprocess':'http://xyz...'}
root = ET.Element("talendfile:ProcessType")
ET.register_namespace('xmi', 'version="2.0"') # This part gives a wrong presentation.
# i am able to add URIs here
for prefix, uri in xmlns_uris_dict.items():
root.attrib['xmlns:' + prefix] = uri
创建命名空间元素和属性的一个好方法是使用 QName
。
import xml.etree.ElementTree as ET
NS = "http://www.omg.org/XMI"
ET.register_namespace("xmi", NS)
# Create xmi:XMI element
root = ET.Element(ET.QName(NS, "XMI"))
# Add xmi:version attribute
root.set(ET.QName(NS, "version"), "2.0")
print(ET.tostring(root).decode())
结果:
<xmi:XMI xmlns:xmi="http://www.omg.org/XMI" xmi:version="2.0" />
register_namespace()
确保在序列化 XML 文档时使用 xmi
前缀(不是默认的 ns0
)。
我正在创建一个 xml 文件。我完成了根元素的创建,并且能够定义 xml 声明。但我需要创建花药标签,它看起来像
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:TalendProperties="http://www.talend.org/properties">
# i am unable to replicate the above
### some subelements..
</xmi:XMI>
我已完成添加 xmlns URI,但无法获取 xmi:version="2.0"。
我不熟悉 XML,所以感到困惑,阅读了有关命名空间的所有内容,但不太了解。有人可以告诉我如何做到这一点或分享相关的网络链接。那会很有帮助。因为我在互联网上发现了大部分 XML 解析内容,但 XML 生成的资源很少。
xmlns_uris_dict = {'xmi':'http://..', 'subprocess':'http://xyz...'}
root = ET.Element("talendfile:ProcessType")
ET.register_namespace('xmi', 'version="2.0"') # This part gives a wrong presentation.
# i am able to add URIs here
for prefix, uri in xmlns_uris_dict.items():
root.attrib['xmlns:' + prefix] = uri
创建命名空间元素和属性的一个好方法是使用 QName
。
import xml.etree.ElementTree as ET
NS = "http://www.omg.org/XMI"
ET.register_namespace("xmi", NS)
# Create xmi:XMI element
root = ET.Element(ET.QName(NS, "XMI"))
# Add xmi:version attribute
root.set(ET.QName(NS, "version"), "2.0")
print(ET.tostring(root).decode())
结果:
<xmi:XMI xmlns:xmi="http://www.omg.org/XMI" xmi:version="2.0" />
register_namespace()
确保在序列化 XML 文档时使用 xmi
前缀(不是默认的 ns0
)。