我正在处理一个表示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导入格式。在
我想在python2.5中使用ElementTree修改这个XML文件。在
我至少有一个问题,但我发现了两个后果,如下所示:
使用以下简单代码:
^{pr2}$结果是:(我不想做任何改变)
<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上找到了一个主题,上面写着add
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 (:)
有人想办法帮我吗?在
谢谢你!在
register_namespace
是only available since Python 2.7在2.5中,也许还有另一种方法可以用ElementTree保存名称空间,但我不知道。在
或者,您可以尝试另一个解析库。lxml保留名称空间,其API与ElementTree兼容。在
请参见本页:http://effbot.org/zone/element-namespaces.htm
ElementTree1.3(Python2.7)
在ET.register\u命名空间(前缀,uri)
ElementTree1.2(Python2.5)
ET._namespace_map[uri]=前缀
相关问题 更多 >
编程相关推荐