ホームページ > バックエンド開発 > Python チュートリアル > ElementTree を使用して Python で名前空間を含む XML を解析するにはどうすればよいですか?

ElementTree を使用して Python で名前空間を含む XML を解析するにはどうすればよいですか?

DDD
リリース: 2024-12-20 09:53:11
オリジナル
273 人が閲覧しました

How Can I Parse XML with Namespaces in Python Using ElementTree?

「ElementTree」を使用した Python の名前空間を使用した XML の解析

ElementTree は、特に XML ドキュメントを解析するための Python の強力なライブラリです。名前空間を持つ XML ドキュメント。名前空間は、異なるソースの要素が同じ名前を持つ場合に名前の衝突を避けるために使用されます。

問題:

を使用して、複数のネストされた名前空間を持つ XML ドキュメントを解析したいと考えています。要素ツリー。具体的には、すべての owl:Class タグを検索し、その中にある rdfs:label インスタンスの値を抽出します。ただし、名前空間が存在するため、「SyntaxError: prefix 'owl' not found in prefix map」エラーが発生します。

解決策:

このエラーを解決するにはの .find()、.findall()、および .iterfind() メソッドを使用する場合は、名前空間辞書を指定する必要があります。エレメントツリー API。このディクショナリは、名前空間プレフィックスを対応する名前空間 URL にマップします。コードを調整する方法は次のとおりです。

namespaces = {'owl': 'http://www.w3.org/2002/07/owl#'}

root.findall('owl:Class', namespaces)
ログイン後にコピー

名前空間辞書を渡すことで、フクロウのプレフィックスを正しい名前空間 URL に解決する方法を ElementTree に明示的に指示します。必要に応じて、複数のプレフィックスと URL を渡すことができます。

代替アプローチ:

あるいは、名前空間辞書に依存せずに、次の構文を使用することもできます。

root.findall('{http://www.w3.org/2002/07/owl#}Class')
ログイン後にコピー

ここでは、タグの前に中括弧で囲まれた名前空間 URL を明示的に指定します。 name.

推奨事項:

ElementTree と比較してより優れた名前空間サポートを提供する lxml ライブラリの使用を検討してください。要素の .nsmap 属性で名前空間が自動的に収集されます。

以上がElementTree を使用して Python で名前空間を含む XML を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート