2016-12-17 2 views
0

Если у меня есть что-то вроде этого:Как найти определенное слово в xml-файле и распечатать все теги для детей с помощью python?

<?xml version='1.0' encoding='UTF-8'?> 
<movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="moviescheme.xsd"> 
<movie> 
    <title>Million Dollar Baby</title> 
    <formattype>video</formattype> 
    <genre>Drama</genre> 
    <genre>Sport</genre> 
    <released> 
    2004 
    </released> 
    <rate> 
    <rottentomatoes>91%</rottentomatoes> 
    <imbd>8.1</imbd> 
    </rate> 
</movie> 
<movie> 
    <title>Room</title> 
    <formattype>video</formattype> 
    <genre>Drama</genre> 
    <released> 
    2015 
    </released> 
    <rate> 
    <rottentomatoes>94%</rottentomatoes> 
    <imbd>8.2</imbd> 
    </rate> 
</movie> 
</movies> 

Как я могу найти слово «номер», например, получить все связанные теги -дети из связанного фильма tag- к нему и распечатать его?

ответ

0

Вы можете использовать LXML с XPath для учебника см http://lxml.de/tutorial.html

from lxml import etree 
# Read the xml file. 
root = etree.parse("movies.xml") 
# get the movie element with the title test Room 
elems = root.xpath("//movie[title/text()='Room']") 
# for the child elments print the data recursing through other children 
def printitems (elems): 
    for i in elems: 
     print("%s - %s" % (i.tag, i.text)) 
     printitems(i) 

printitems (elems[0]) 

дает

title - Room 
formattype - video 
genre - Drama 
released - 
    2015 

rate - 

rottentomatoes - 94% 
imbd - 8.2 

отредактирован рекурсию через дочерние узлы детей.

+0

Большое спасибо, это было полезно. – RowanX

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