2017-02-21 9 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') 

проблема заключается в том, что функция возвращает только первое подмножество и я не могу показаться, чтобы получить другой ... Я также XML-файлы, которые имеют вверх до 6 детей. Пожалуйста, помогите о том, как я смогу разобрать это, чтобы получить все, что есть в XML .... Спасибо

expected out 
  1. заголовка
  2. выстрела
+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