1. ホーム
  2. python

[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?

2022-03-17 11:33:53

質問

XMLを含むデータベースに多くの行があり、特定のノード属性のインスタンスをカウントするPythonスクリプトを書こうとしています。

私のツリーは次のようなものです。

<foo>
   <bar>
      <type foobar="1"/>
      <type foobar="2"/>
   </bar>
</foo>

属性にアクセスするには "1""2" をPythonを使ってXMLに変換することはできますか?

どのように解決するのですか?

提案 ElementTree . 同じAPIで互換性のある実装は他にもあります。 lxml および cElementTree はPythonの標準ライブラリそのものです。しかし、この文脈では、それらが主に追加するのはさらなる速度です。 ElementTree が定義しています。

まず、Element のインスタンスを作成します。 root はXMLから、例えば XML 関数のようなものを使ってファイルをパースすることによっても可能です。

import xml.etree.ElementTree as ET
root = ET.parse('thefile.xml').getroot()

で紹介されている他の多くの方法のいずれかです。 ElementTree . そして、次のようなことをします。

for type_tag in root.findall('bar/type'):
    value = type_tag.get('foobar')
    print(value)

そして、似たような、通常はかなり単純なコードパターンもあります。