如何从lxml树中剥离名称空间?

2024-03-28 11:04:46 发布

您现在位置:Python中文网/ 问答频道 /正文

Removing child elements in XML using python开始。。。

多亏了@Tichodroma,我有了这个代码:

如果可以使用lxml,请尝试以下操作:

 import lxml.etree

 tree = lxml.etree.parse("leg.xml")
 for dog in tree.xpath("//Leg1:Dog",
                       namespaces={"Leg1": "http://what.not"}):
     parent = dog.xpath("..")[0]
     parent.remove(dog)
     parent.text = None
 tree.write("leg.out.xml")

现在leg.out.xml看起来像这样:

 <?xml version="1.0"?>
 <Leg1:MOR xmlns:Leg1="http://what.not" oCount="7">
   <Leg1:Order>
     <Leg1:CTemp id="FO">
       <Leg1:Group bNum="001" cCount="4"/>
       <Leg1:Group bNum="002" cCount="4"/>
     </Leg1:CTemp>
     <Leg1:CTemp id="GO">
       <Leg1:Group bNum="001" cCount="4"/>
       <Leg1:Group bNum="002" cCount="4"/>
     </Leg1:CTemp>
   </Leg1:Order>
 </Leg1:MOR>

如何修改代码以从所有元素的标记名中删除Leg1:名称空间前缀?


Tags: 代码intreegroupxmllxmlxpathparent