2015-09-29 2 views
0

Мои попытки пересечения xml-файла, полученного из URL-адреса, всегда терпели неудачу. Хотя, он работал, если я напечатал файл XML непосредственно в коде, такие как:ошибка обхода xml в Python

smplexml = ''' somexml''' 

, но я не увенчались успехом, чтобы сделать код как:

import xml.etree.ElementTree as ET 
    import urllib 

    xmlstr = urllib.urlopen('http://www.w3schools.com/xml/simple.xml').read() 
    tree = ET.fromstring(xmlstr) 
    print tree.find('name').text 

эту работу. Пожалуйста, что я делаю неправильно? Иногда я получаю сообщение об ошибке, как:

AttributeError: 'NoneType' object has no attribute 'text' 
+0

если 'tree.find ('имя')' не находит ничего, он возвращает 'None'. У которого нет атрибута 'text'. Сначала вы должны найти и убедиться, что вы действительно что-то нашли, прежде чем пытаться его использовать. (и вы также можете использовать 'findall', чтобы найти несколько). –

ответ

0
import xml.etree.ElementTree as ET 
import urllib 

xmlstr = urllib.urlopen('http://www.w3schools.com/xml/simple.xml').read() 
tree = ET.fromstring(xmlstr) 
for food in tree: 
    print food.find('name').text 
+2

Пожалуйста, отредактируйте свой ответ, чтобы объяснить, что не так с кодом OP и почему это решает проблему. –

+0

Да, петля заставляет ее работать. Но я попробовал тот же код с этим извлечением xml: 'http://ieeexplore.ieee.org/gateway/ipsSearch.jsp?querytext=%28systematic%20review%20OR%20systematic%20literature%20review%20AND%20text%20mining%20techniques % 29 & ПыС = 2009 && Нс = 5' . Я попытался извлечь текст слова «title», который он не работал. –

Смежные вопросы