мне нужно обработать огромный файл со многими узлами структурированными любит этоПопытки перебрать XML: не может получить значения подузла в
<category name="28931778o.rjpf">
<name>RequestedName</name>
<root>0</root>
<online>1</online>
<description xml:lang="pt-PT">mydescription </description>
<category-links/>
<template/>
<parent name="PTW-0092"/>
<custom-attributes>
<custom-attribute name="sortkey" dt:dt="string">RequestedValue</custom-attribute>
<custom-attribute name="ShortLink" dt:dt="string" xml:lang="pt-PT">/Requested_Url.html</custom-attribute>
<custom-attribute name="ShortLinkActivate" dt:dt="string" xml:lang="pt-PT">true</custom-attribute>
...
</category>
мне нужно, чтобы вернуться к каждой категории 3 запрашиваемых значения. Я использую Python .27 и etree. при запуске
for elem in tree.iterfind('{http://www.cc.com/a}category'):
requestedName = elem.find('{http://www.cc.com/a}name').text
print requestedName
Он отлично работает
при запуске
for elem in tree.iterfind('{http://www.cc.com/a}category/{http://www.cc.com/a}custom-attributes/{http://www.cc.com/a}custom-attribute[@name="sortkey"]'):
print elem.text
он прекрасно работает и Проблема возникает, когда я хочу, чтобы извлечь все три значения. Я пытаюсь найти «категории» узел и внутри него, чтобы найти 2 запрашиваемых значений
for elem in tree.iterfind('{http://www.cc.com/a}category'):
requestedName = elem.find('{http://www.cc.com/a}name').text
print requestedName
Requestedsortkey = elem.find('./{http://www.cc.com/a}custom-attributes/{http://www.cc.com/a}custom-attribute[@name="sortkey"]')
print Requestedsortkey.text
RequestedUrl = elem.find('./{http://www.cc.com/a}custom-attributes/{http://www.cc.com/a}custom-attribute[@name="ShortLink"]')
print RequestedUrl.text
сбой программы с его сообщение об ошибке AttributeError: объект «NoneType» не имеет атрибута «текст»
Кто может Помогите?
Вы должны проверить, нет ли объекта 'Нет', прежде чем пытаться получить доступ к атрибуту' text'. – dopstar
Я не уверен, но вижу одно отличие - в новой версии вы используете '. /' В пути, но не с 'name'. – furas
Огромное спасибо dopstar – Chauvinus