我正在處理一個代表UML模型的XML文件。下面是它的一個例子:Python 2.5:XML中的ElementTree和UML
<?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>
我搜索關於這個問題,我發現在計算器一個主題,說要加
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 (:)
有別人的想法幫我?
謝謝!
謝謝你的回答。我終於找到了另一個解決方案,我在這裏實習的公司已經開發出了替代修改XML文件的工具,因此我將使用它。 – Teodoro