2017-02-21 164 views
1
<goal> 
<value> 
    <comment>n</comment> 
    <stats> 
     <goals>1</goals> 
     <shoton>1</shoton> 
    </stats> 
    <event_incident_typefk>406</event_incident_typefk> 
    <elapsed>22</elapsed> 
    <player2>38807</player2> 
    <subtype>header</subtype> 
    <player1>37799</player1> 
    <sortorder>5</sortorder> 
    <team>10261</team> 
    <id>378998</id><n>295</n> 
    <type>goal</type> 
    <goal_type>n</goal_type> 
</value> 
<value> 
    <comment>n</comment> 
    <stats> 
     <goals>1</goals> 
     <shoton>1</shoton> 
    </stats> 
    <event_incident_typefk>393</event_incident_typefk> 
    <elapsed>24</elapsed> 
    <player2>24154</player2> 
    <subtype>shot</subtype> 
    <player1>24148</player1> 
    <sortorder>4</sortorder> 
    <team>10260</team> 
    <id>379019</id><n>298</n> 
    <type>goal</type> 
    <goal_type>n</goal_type> 
</value> 

的Python解析XML文件

def extract_goal_type(data): 
    #print(data) 
    if data : 
     root = ET.fromstring(data) 
     tree = ET.ElementTree(root) 
     root = tree.getroot() 
     for c in root.getchildren(): 
      return c.findtext('subtype') 

的問題是,該功能僅返回第一個子集和L似乎無法得到其他... ...你還擁有面向了XML文件到6個孩子。請l可如何解析這個得到的一切是在XML幫助....謝謝

expected out 
  1. 拍攝
+0

的XML是無效的這隻會工作。它缺少結束''。你不能解析它 –

+2

除此之外,你必須收集列表中的所有發現並最終返回列表,而不是返回找到的第一個。 –

回答

0

您從for循環重新調諧,你必須遍歷所有元素然後返回數據。

def extract_goal_type(data): 
    #print(data) 
    ret_data = [] 
    if data : 
     root = ET.fromstring(data) 
     tree = ET.ElementTree(root) 
     root = tree.getroot() 
     for c in root.getchildren(): 
      ret_data.append(c.findtext('subtype')) 
    return ret_data 

注:如果您有有效的XML

+0

非常感謝你,但只有一個問題......我如何才能將答案返回到表格的單獨標籤中? –

+0

如果您有其他問題,請在單獨的線索中詢問。如果你提供所有細節,人們可以給出更好的答案 – Nilesh