2016-11-17 9 views
0

私はElementTreeでデータを解析するXMLファイルを持っています。しかし、データを解析して変数と同じにしたいので、.csvファイルに出力することができます。ここでElementTreeを使ってXMLを解析する - python

は、XMLファイルのsnipetである:ここで

<Item ID="productID" TableID="itemvp"> 
<ItemField TableFieldID="name" Value="totally awesome product"/> 
<ItemField TableFieldID="code" Value="product code"/> 
<ItemField TableFieldID="dimensions" Value="34&quot;W x 65&quot;D x 39&quot;H"/> 
<ItemField TableFieldID="caption" Value="description"/> 
<ItemField TableFieldID="upc" Value="upc code"/> 
<ItemField TableFieldID="sale-price" Value="2599.95"/> 
</Item> 

は、私がこれまで持っているものです。

root = tree.getroot() 
for child in root.iter('ItemField'): 
    print child.attrib 

これは、次の形式でデータを出力します。

{'TableFieldID': 'name', 'Value': 'totally awesome product'} 

基本的に辞書です。私が理解できないことは、 "name"(完全に素晴らしい製品)の値を "productName"という変数に設定できるように解析する方法です。これを行う方法に関するアイデア?最終的にこのデータを.csv形式でエクスポートします。あなたのループ内

答えて

0

TableFieldIDnameであるかどうかを確認し、次にValueproductName変数を設定します。

for child in root.iter('ItemField'): 
    if child.attrib['TableFieldID'] == 'name': 
     productName = child.attrib['Value'] 
+0

私は、変数に複数の異なる値を設定したい場合、私は場合によってそれらすべてを実行する必要がありますステートメント? (ItemField): ルート= tree.getroot() root.iter( 'ItemField')の子: if child.attrib ['TableFieldID'] == 'code': productCode = child.attrib ['値'] if child.attrib [' TableFieldID '] ==' name ': productName = child.attrib [' Value ']' – Bokai

+0

また、XPath構文を使用して、必要な要素、つまりhttps:// docsを見つけることもできます。 python.org/3/library/xml.etree.elementtree.html#xpath-support – dvnguyen

+0

素晴らしい!私にそれを見せてくれてありがとう。 – Bokai