使用python获取xml文件的某些部分

时间:2012-08-08 22:27:19

标签: python xml xpath

我是Python新手,我有以下.xml文件:

<A>
  <B>
    <C>NUM123456</C>
    <D>
      <E>123</E>
      <F>Spam</F>
        <G>Apple</G>
    </D>
    <D>
      <E>456</E>
      <F>Egg</F>
        <G>Orange</G>
    </D>
    <D>
      <E>789</E>
      <F>Bacon</F>
        <G>Strawberry</G>
    </D>
    <D>
      <E>0AB</E>
      <F>Cheese</F>
        <G>Cherry</G>
    </D>
  </B>
</A>

我正在尝试将其中的一部分用于新的.xml文件:

<A>
  <B>
    <C>NUM123456</C>
    <D>
      <E>456</E>
      <F>Egg</F>
        <G>Orange</G>
    </D>
    <D>
      <E>0AB</E>
      <F>Cheese</F>
        <G>Cherry</G>
    </D>
  </B>
</A>

我正在尝试使用.xpath,但只有在找到不同节点后才开始编写新的.xml文件。换句话说,新<A> <B>文件中不包含节点<C>.xml。有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要输入正确的标准 - 我根据您的示例中的文本值设置此过滤器:

#!/usr/bin/env python
from xml.etree import ElementTree
import sys
tree = ElementTree.ElementTree()
tree.parse(sys.stdin)
b = tree.find("B")
for e in b.getiterator("D"):
    if e.find("E").text in ["123", "789"]: 
        b.remove(e)
tree.write(sys.stdout)

像这样运行:

  

./ parse.py< file.xml

获得所需的输出。