编程语言
首页 > 编程语言> > Python 2.5:XML中的ElementTree和UML

Python 2.5:XML中的ElementTree和UML

作者:互联网

我正在处理代表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>

这是狂想曲导入格式.

我想通过在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:预期的路径分隔符(:)

有一个想法可以帮助我吗?

谢谢!

解决方法:

register_namespace为only available since Python 2.7

在2.5中可能还有另一种使用ElementTree保留名称空间的方法,但我不知道.

或者,您可以尝试另一个解析库. lxml保留名称空间,并且其API与ElementTree兼容.

标签:python-2-5,python,elementtree
来源: https://codeday.me/bug/20191013/1906971.html