2013-08-30 2 views
2

Предположим, что у меня есть XML-документ в следующей формеэкстракт тегов внутри текстового элемента XML-тега

<root> 
    <foos> 
    <foo>the quick <bar>brown </bar>fox</foo> 
    </foos> 
    <!-- Lots more <foo></foo> --> 
</root> 

Как извлечь полную текстовую строку the quick fox, а также строки brown?

import xml.etree.ElementTree as ET 
doc = ET.parse(xmldocument).getroot() 
foos = doc.find('foos') 
for foo in foos: 
    print foo.text # This will print 'the quick ' 

Не знаете, как решить эту проблему.

ответ

2

Вы также можете попробовать что-то вроде этого, который последовательно во всех вложенных тегов автоматически:

foos = doc.find('foos') 
for foo in foos: 
    for text in foo.itertext(): 
     print text.strip(), 
    print 
+0

Это работало для меня, спасибо. – rwols

0
from scrapy.selector import XmlXPathSelector 

xml = \ 
""" 
<root> 
    <foos> 
     <foo>the quick <bar>brown </bar>fox</foo> 
    </foos> 
</root> 
""" 


hxs =XmlXPathSelector(text=xml) 
foos = hxs.select('//foos') 
for one in foos: 
    text = one.select('./foo//text()').extract() 
    text = ''.join(text) 
    print text 
Смежные вопросы