2016-05-20 5 views
0
<Fruits> 
    <Fruit> 
     <Family>Citrus</Family> 
     <Explanation>this is a Citrus fruit.</Explanation> 
     <Type>Orange</Type> 
     <Type>Lemon</Type> 
    </Fruit> 
</Fruits> 

Я хочу извлечь Объяснение этого XML-кода и присвоить его обеим плодам (Тип) рядом с ними. Это мой код:Получить данные из XML-файла Python

import os 
from xml.etree import ElementTree 
file_name = "example.xml" 
full_file = os.path.abspath(os.path.join("xml", file_name)) 
dom = ElementTree.parse(full_file) 
Fruit = dom.findall("Fruit") 

for f in Fruit: 
    Type = f.find("Type").text 
    Explanation = f.find("Explanation").text 

    print (Type, Explanation) 

Я просто получаю результат для первого плода древовидной структуры.

Orange, this is a Citrus fruit. 

Но я хотел бы получить все типы со своим объяснением, назначенным рядом с ним. Поэтому результат должен выглядеть так:

Orange, this is a Citrus fruit. 
Lemon, this is a Citrus fruit. 

ответ

1

Вы перебираете элемент Fruit, а не типы внутри. Таким образом, вам нужно будет сделать что-то подобное (есть и другие способы), чтобы получить эти результаты:

import os 
from xml.etree import ElementTree 
file_name = "example.xml" 
full_file = os.path.abspath(os.path.join("xml", file_name)) 
dom = ElementTree.parse(full_file) 
Fruit = dom.findall("Fruit") 

for f in Fruit: 
    Explanation = f.find("Explanation").text 
    Types = f.findall("Type") 
    for t in Types: 
     Type = t.text 
     print ("{0}, {1}".format(Type, Explanation))