2013-10-15 1 views
0

У меня есть файл XML со структурой, как это:имя узла из файла XML с помощью LXML

<?xml version="1.0" encoding="ISO-8859-1"?> 

<root> 

<Validity> 
    <OneValidity a=1>----</OneValidity> 
    <OneValidity a=2>----</OneValidity> 
</Validity> 

<ValidityLine> 
    <OneValidityLinea a=1>----</OneValidityLine> 
    <OneValidityLinea a=2>----</OneValidityLine>  
</ValidityLine> 

</root> 

Я хотел бы вернуться, используя питон и LXML библиотеки, имя, которое родители узла: Validity и ValidityLine ,

+0

В чем вопрос? – usethedeathstar

+0

Кажется, что всегда жалуется, если какое-либо из имен узлов начинается с числа, например '1a' и' 2' – yakiang

+4

Это недопустимый XML-документ. Имена не могут начинаться с цифры. –

ответ

1
from lxml import etree 

tree = etree.parse("file.xml") 
root = tree.getroot() 
validityLst = root.xpath('Validity') 
validityLineLst = root.xpath('ValidityLine') 
+0

Спасибо. Я уже использовал этот код, и он работает. Но могу ли я вернуть имя узла родителей, без указания в коде имени узла родителей («Validity» и «ValidityLine»). Возможно ли работать с strcuture файла xml и его иерархии? –

+0

@ пользователь2418290: обязательно. Вы можете использовать 'root.getchildren()' для извлечения дочерних элементов 'root' elem:' Validity' и 'ValidityLinea'. – user278064

+0

отлично работает, используя: 'tree = etree.parse (filename) root = tree.getroot() children = root.getchildren() print children [0] .tag print children [1] .tag' –

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