2016-10-06 7 views
0

皆さん! は、私はいくつかの奇妙な成形されたXML解析しようとしています:値の両方ので属性をPythonとElementTreeを使ったXML属性の解析

<?xml version="1.0" encoding="UTF-8"?> 
<analytics> 
    <standard1> 
    ... 
    <attributes> 
     <attribute name="agentname" value="userx userx" /> 
     <attribute name="agentpk" value="5" /> 
     <attribute name="analytics:callid" value="757004000003597" /> 
     ... 
     <attribute name="wrapuptime" value="0" /> 
    </attributes> 
    </standard1> 
    <standard2> 
    ... 
    <attributes> 
     <attribute name="agentname" value="userx userx" /> 
     <attribute name="agentpk" value="5" /> 
     <attribute name="analytics:callid" value="757004000003597" /> 
     ... 
     <attribute name="wrapuptime" value="0" /> 
    </attributes> 
    </standard2> 
    <engines> 
    ... 
    </engines> 
</analytics> 

を、私は、全体をループせずににアクセスする方法はわかりませんforeachサイクルの属性サブセクション

ElementTreeを使用して直接アクセスする方法はありますか?

答えて

1

簡略XXath式を使用して、の値でattribute要素をフィルタリングすることができます。サンプル作業コード:

import xml.etree.ElementTree as ET 

data = """<?xml version="1.0" encoding="UTF-8"?> 
<analytics> 
    <standard> 
     <attributes> 
     <attribute name="agentname" value="userx userx" /> 
     <attribute name="agentpk" value="5" /> 
     <attribute name="analytics:callid" value="757004000003597" /> 
     <attribute name="wrapuptime" value="0" /> 
     </attributes> 
    </standard> 
</analytics> 
""" 

root = ET.fromstring(data) 
print(root.find(".//attribute[@name='agentname']").attrib["value"]) 

プリント:

userx userx 

xml.etree.ElementTreelimited XPath supportを持っていることに注意してください。

+0

@ e-pirateよく、正確にあなたが何をしているのかまだ分かりませんが、式を調整することができます。 './/standard2//attributes/attribute[@name='agentname']'..hopeが役立ちます。 – alecxe

+0

@ e-pirate最新のXMLをご覧ください。私は検索する特定のstandardXのどの属性サブセクションを選択する必要があります。 –

+0

@ e-pirate大丈夫、別の方法でアプローチしましょう。質問XMLに提示されたものに対して、あなたが望む出力を投稿することができますか?ありがとう。 – alecxe

関連する問題