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 ファイルを変更したいと考えています。
少なくとも 1 つの問題がありますが、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'
2 番目の結果は、次のようなコードの場合です。
for Package_Node in Temp_Node.find('UML:Package'):
エラーが発生します:SyntaxError: expected path separator (:)
誰かが私を助けるアイデアを持っていますか?
ありがとうございました!