ホームページ  >  記事  >  バックエンド開発  >  Python ElementTree で要素の場所の XML 名前空間を無視する方法は?

Python ElementTree で要素の場所の XML 名前空間を無視する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 07:18:30512ブラウズ

How to Ignore XML Namespaces for Element Location in Python ElementTree?

Python ElementTree での要素の場所の XML 名前空間の無視

ElementTree モジュールでは、次のような問題が発生すると、XML ファイル内の特定の要素を見つけるのが困難になることがあります。提供された例に示されているように、名前空間。 findall メソッドを使用する場合、各タグの前に {http://www.test.com} を含めると不便になります。

解決策:

XML ドキュメント自体の場合、より最適なアプローチには、XML を解析した後にタグ名を変更することが含まれます。これにより、複数の名前空間と名前空間エイリアスの処理が可能になります。

iterparse 関数を使用して変更したコードは次のとおりです。

<code class="python">from io import StringIO  # for Python 2 import from StringIO instead
import xml.etree.ElementTree as ET

with open('test.xml', 'r') as f:
    xml = f.read()

it = ET.iterparse(StringIO(xml))
for _, el in it:
    _, _, el.tag = el.tag.rpartition('}')  # strip ns

root = it.root</code>

_、_、el.tag = el.tag を設定します。 rpartition('}') では、名前空間 (_{http://www.test.com}) がタグ名から削除されます。これにより、名前空間を考慮せずにその後のタグの処理が可能になります。したがって、findall メソッド:

<code class="python">el1 = root.findall("DEAL_LEVEL/PAID_OFF")</code>

は、目的の を返します。名前空間プレフィックスのない要素。

以上がPython ElementTree で要素の場所の XML 名前空間を無視する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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