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つまり、 node<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 < file.xml

目的の出力を取得します。

于 2012-08-08T23:31:40.390 に答える