2015-09-18 35 views
0

您好,我正在編寫一些代碼,然後運行一些與ElementTree相關的代碼。我需要幫助閱讀這個XML或類似的東西。 XML是基於選擇生成的,因此可以更改。用ElementTree將XML屬性解析爲變量

<root> 
    <Locations> 
     <1 name="CacheLocation">C:\Users\daunish\Desktop</1> 
    </Locations> 
    <Objects> 
     <1 name="Sphere">[u'pSphere1', u'pSphere2']</1> 
     <2 name="Cube">[u'pCube1']</2> 
    </Objects> 
</root> 

我需要一種搜索​​「位置」內的特定「名稱」,並將文本傳遞給變量的方法。

我還需要一種方法來遍歷「Objects」中的每一行並執行一個函數,就像在for循環中一樣。

我接受了所有的建議,我一直在瘋狂地試圖讓這個工作。如果你認爲我應該以不同的方式格式化XML,那麼我也是這麼做的。先謝謝您的幫助。

回答

1

[注意:你的XML的格式不正確,因爲你不能有一個以數字開頭標籤]
不知道你已經嘗試過什麼,但也有許多方法可以做到這一點,這裏有一個:

找到名字是在位置上的第一個元素= CacheLocation:

>>> filename = root.find("./Locations/*[@name='CacheLocation']").text 
>>> filename 
'C:\\Users\\daunish\\Desktop' 

遍歷對象中的所有元素:

>>> import ast 
>>> for target in root.find("./Objects"): 
...  for i in ast.literal_eval(target.text): 
...   print(target.get('name'), i) 
Sphere pSphere1 
Sphere pSphere2 
Cube pCube1 
+0

真棒人!我不知道我沒有以數字開頭的標籤。最後,事情開始擡頭,真的很感激它。 –