ホームページ  >  記事  >  バックエンド開発  >  ElementTree の findall メソッドと find メソッドを使用するときに XML 名前空間を無視するにはどうすればよいですか?

ElementTree の findall メソッドと find メソッドを使用するときに XML 名前空間を無視するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 06:46:29446ブラウズ

How can I ignore XML namespaces when using ElementTree's findall and find methods?

ElementTree での XML 名前空間の無視

ElementTree の findall メソッドと find メソッドでは、名前空間を含む XML ファイルから要素を検索するときに、名前空間を認識するアプローチが必要です。ただし、多数のタグで名前空間が必要な場合、これは面倒になる可能性があります。

Iterparse による名前空間の無視

名前空間を無視するには、ElementTree の iterparse メソッドを利用できます。方法は次のとおりです:

<code class="python">from io import StringIO  # Python 2: import from StringIO instead

import xml.etree.ElementTree as ET

# Parse the XML file
it = ET.iterparse(StringIO(xml))

# Strip namespace from tags
for _, el in it:
    _, _, el.tag = el.tag.rpartition('}') # strip ns

root = it.root</code>

このアプローチでは、名前空間を削除することでタグ名を変更し、明示的に名前空間を指定しなくても要素の位置を簡単に特定できるようにします。ここでの説明で示唆されているように、この手法により、複数の名前空間とエイリアスをより柔軟に処理できます。

以上がElementTree の findall メソッドと find メソッドを使用するときに XML 名前空間を無視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。