0

初心者 - lxml を使用して、任意の要素で「エラー」を見つけようとしています (以下のサンプル XML ファイルですが、タグがどのようにネストされているかに関係なく機能するはずです)。

<test>
  <test1>
    error
  </test1>
  <test2>  
    <test3>
      error
    </test3>
  </test2>
</test>

これまでのところ、lxml はタグのみを検索でき、タグ内のデータは検索できないようです。これは正しいですか?

4

1 に答える 1

0

要素内のテキストを検索する組み込み関数があるかどうかを尋ねていますか? lxmletreeパーサーを使用して独自の検索ルーチンを作成するのは非常に簡単です。例えば:

test.xml

<test>
  <test1>
    error
  </test1>
  <test2>  
    <test3>
      error
    </test3>
  </test2>
</test>

コマンドラインから:

>>> import lxml.etree as etree
>>> for event, element in etree.iterparse("test.xml"):
...   # Print the tag of a matching element
...   if element.text.strip() == "error":
...     print element.tag
... 
test1
test3

編集: このルートにたどり着き、XML 名前空間をいじる必要がない場合は、xml.etree.cElementTree代わりにチェックアウトすることをお勧めしますlxml.etree。これは Python の標準モジュールに含まれており、同等かわずかに高速ですlxml.etree

于 2013-04-04T06:29:51.900 に答える