0

我对 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文件都没有包含。有人可以帮忙吗?

谢谢!

4

1 回答 1

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 < 文件.xml

得到你想要的输出。

于 2012-08-08T23:31:40.390 回答