2016-10-26 47 views
0

我有一個XML字符串,它看起來是這樣的:Python的 - 元素樹發現

我使用的元素樹庫

<?xml version="1.0" encoding="UTF-8"?> 
<GetCategoriesResponse xmlns="urn:ebay:apis:eBLBaseComponents"><CategoryArray><Category><WantedParm1>true</WantedParm1><UnwantedParm1>true</UnwantedParm1><WantedParm2>20081</WantedParm2></Category></CategoryArray></GetCategoriesResponse> 

我想要得到的類別節點的一些價值觀,讓我們呼喚他們想要Parms 1和2.但是我得到一個AttributeError可能是因爲我寫的代碼無法找到Category項目的子節點。

AttributeError:'NoneType'對象沒有屬性'text'。

import xml.etree.ElementTree as ET 
XML = #Above Code in String 
tree = ET.ElementTree(ET.fromstring(XML)) 
root = tree.getroot() 
for Category in root[0]: 
    one = Category.find("WantedParm1").text 
    two = Category.find("WantedParm2").text 
    print(one, two) 
+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在您發佈代碼並準確描述問題之前,我們無法有效幫助您。 「有問題」不是問題描述。 – Prune

+0

@Prune我真的很抱歉,我在輸入問題時按下提交,並上傳了表單。我試圖更新它asap – Juanvulcano

+0

瞭解。但是,您仍然沒有發佈MCVE,因此我們可以重現該問題。你給** find **的電話已經返回了** None **,但就目前來說,就我能帶你而言 - 簡而言之,你已經猜到了。 – Prune

回答

3

的XML元素都在默認名稱空間urn:ebay:apis:eBLBaseComponents因此,所有標記獲取前綴與命名空間的完整URI。

更改您的find()參數以包含URI應起作用。

import xml.etree.ElementTree as ET 
XML = #Above Code in String 
tree = ET.ElementTree(ET.fromstring(XML)) 
root = tree.getroot() 
for Category in root[0]: 
    one = Category.find("{urn:ebay:apis:eBLBaseComponents}WantedParm1").text 
    two = Category.find("{urn:ebay:apis:eBLBaseComponents}WantedParm2").text 
    print(one, two) 

你可以找到與命名空間的元素樹文檔here或該堆棧溢出post處理更多的信息。