ホームページ >バックエンド開発 >Python チュートリアル >Python ElementTree で要素の場所の XML 名前空間を無視する方法は?
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 サイトの他の関連記事を参照してください。