使用python删除XML中的子元素

LCGA

Python 3.2.5 x64 ElementTree

我有需要使用python格式化的数据。本质上,我具有包含元素和子元素的文件。我需要删除其中一些元素的子元素。我已经检查了先前的问题,但无法解决。到目前为止,我拥有的最好的功能只是删除了每个第二子元素。

样本数据:

<Leg1:MOR oCount="7" xmlns:Leg1="http://what.not">
    <Leg1:Order>
        <Leg1:CTemp id="FO">
            <Leg1:Group bNum="001" cCount="4">
                <Leg1:Dog ndate="112" pdate="111"/>
                <Leg1:Dog ndate="122" pdate="121"/>
                <Leg1:Dog ndate="132" pdate="131"/>
                <Leg1:Dog ndate="142" pdate="141"/>
            </Leg1:Group>
                <Leg1:Group bNum="002" cCount="4">
                <Leg1:Dog ndate="112" pdate="111"/>
                <Leg1:Dog ndate="122" pdate="121"/>
                <Leg1:Dog ndate="132" pdate="131"/>
                <Leg1:Dog ndate="142" pdate="141"/>
            </Leg1:Group>
        </Leg1:CTemp>
        <Leg1:CTemp id="GO">
            <Leg1:Group bNum="001" cCount="4">
                <Leg1:Dog ndate="112" pdate="111"/>
                <Leg1:Dog ndate="122" pdate="121"/>
                <Leg1:Dog ndate="132" pdate="131"/>
                <Leg1:Dog ndate="142" pdate="141"/>
            </Leg1:Group>
            <Leg1:Group bNum="002" cCount="4">
                <Leg1:Dog ndate="112" pdate="111"/>
                <Leg1:Dog ndate="122" pdate="121"/>
                <Leg1:Dog ndate="132" pdate="131"/>
                <Leg1:Dog ndate="142" pdate="141"/>
            </Leg1:Group>
        </Leg1:CTemp>
    </Leg1:Order>
</Leg1:MOR>

我需要的输出看起来像:

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

我有一段时间没有写任何东西了,我的代码也没用。我可以解析文件,然后将其写入,但我无法正确处理。

import xml.etree.cElementTree as ET
tree = ET.parse("input.xml")
root = tree.getroot()
for x in root.findall('./Order/CTemp/Group'):
    root.remove(x)
tree.write("output.xml")

我如何删除元素DogCTemp元素?

用户名

如果可以使用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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Python 删除 XML 文件中的元素

来自分类Dev

Python使用XML Iterparse从大型xml文件中删除元素

来自分类Dev

Python使用XML Iterparse从大型xml文件中删除元素

来自分类Dev

如何使用Java和Stax从Xml中删除元素及其子元素

来自分类Dev

如何使用python和BeautifulSoup从xml中删除完整元素

来自分类Dev

在C#中删除特定的XML元素及其子元素

来自分类Dev

在Python lxml中访问子XML元素

来自分类Dev

在XML python中解析子元素

来自分类Dev

Python从XML树中删除重复的元素

来自分类Dev

Python从XML树中删除重复的元素

来自分类Dev

使用DOMDocument删除php中的XML元素

来自分类Dev

使用Etree从XML中删除特定元素

来自分类Dev

使用XLST从xml文件中删除元素

来自分类Dev

在SQL Server 2008中删除XML子节点元素

来自分类Dev

删除XML中的元素

来自分类Dev

Python循环以遍历XML中的元素并获取子元素值

来自分类Dev

根据Python中的元素从嵌套列表中删除子列表

来自分类Dev

删除Javascript中的子元素

来自分类Dev

使用ET删除Python中的元素

来自分类Dev

如何使用jQuery或普通JS从div中删除子元素

来自分类Dev

无法通过Java代码从XML文档中删除元素和子元素

来自分类Dev

Python:删除列表和子列表中的重复元素;并删除完整的子列表(如果重复)

来自分类Dev

Python:删除列表和子列表中的重复元素;并删除完整的子列表(如果重复)

来自分类Dev

根据子索引删除 XML 元素

来自分类Dev

用列表python中的值替换xml子元素文本

来自分类Dev

python lxml - 如何在 XML 中获取子元素的值

来自分类Dev

向 XML 文件 Python 中的子元素添加索引

来自分类Dev

XML子元素中的变量

来自分类Dev

在Python中使用XPATH访问子XML元素

Related 相关文章

热门标签

归档