我正在使用代表 UML 模型的 XML 文件。这是一个例子:
<?xml version="1.0" encoding="utf-8"?>
<XMI xmi.version="1.1" xmlns:UML="omg.org/UML13">
<XMI.content>
<UML:Model name="Model" xmi.id="_0">
<UML:Namespace.ownedElement>
<UML:Package name="Standard" xmi.id="_5">
</UML:Package>
</UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
</XMI>
它是 Rhapsody 导入格式。
我想在 Python 2.5 中使用 ElementTree 来修改这个 XML 文件。
我至少有一个问题,但我发现了 2 个后果,它们是:
使用这个简单的代码:
import xml.etree.ElementTree as ET
tree = ET.parse('source.xml')
root = tree.getroot()
tree.write('output.xml')
输出是:(我不想要任何改变)
<XMI xmi.version="1.1">
<XMI.content>
<ns0:Model name="FPLN_Model" xmi.id="_0" xmlns:ns0="omg.org/UML13">
<ns0:Namespace.ownedElement>
<ns0:Package name="Standard" xmi.id="_5">
</ns0:Package>
</ns0:Namespace.ownedElement>
</ns0:Model>
</XMI.content>
</XMI>
我搜索了这个问题,我在stackoverflow上找到了一个说要添加的主题
ET.register_namespace("UML", "omg.org/UML13")
但是出现错误:
AttributeError: 'module' object has no attribute 'register_namespace'
第二个后果是使用如下代码:
for Package_Node in Temp_Node.find('UML:Package'):
我得到错误:SyntaxError: expected path separator (:)
有人有想法可以帮助我吗?
谢谢!