2017-03-24 13 views
0

このxmlの解析に問題があります。どのようにすればよいのか誰にでも教えてくれますか?ElementTree(xml.etree)XMLを解析する

これは私が試みたものです。私はこれのpythonを実行すると

import xml.etree.ElementTree as ET 

with open("test.xml",'r') as f: 
    tree = ET.parse(f) 

for node in tree.findall('.//element/hello/world'): 
    print node.text 

XML(のtest.xml)

<?xml version="1.0" ?> 
<element xmlns="http://yoursite.com/"> 
    <hello> 
     <world>1</world> 
     <world>2</world> 
     <world>3</world> 
     <world>4</world> 
    </hello> 
</element> 

PYTHON私は絶対に何も得ます。私が想像しているように、これは信じられないほど簡単なものでなければなりません。

答えて

1

これらのタグはすべて名前空間(xmlns="http://yoursite.com/")の下に存在します。だから、この名前空間で検索をプレフィックスまたはエイリアスマッピングを作成し、例えばいずれか:

>>> ns = {'myns': 'http://yoursite.com/'} 
>>> for node in tree.findall(('./myns:hello/myns:world'), ns): 
...  print(node.text) 
1 
2 
3 
4 

注意が必要です。.を(あなたのルートの下に何elementを持っていない)ので、myns:elementは何かを見つけることができませんでしょう、あなたのルートノードです。エイリアスなし

検索は次のようになります。

for node in tree.findall(('./{http://yoursite.com/}hello/{http://yoursite.com/}world')): 
+0

おかげで、魔法のように働きました。それはおそらく私が理解していたよりもはるかに長い時間がかかりました。 –

関連する問題