1
<xml>
<maintag>    
<content> lorem <br>ipsum</br> <strong> dolor sit </strong> and so on </content>
</maintag>
</xml>

我经常解析的 xml 文件可能在内容标记内有 HTML 标记,如上所示。

这里我如何解析文件:

parser = etree.XMLParser(remove_blank_text=False)
tree = etree.parse(StringIO(xmlFile), parser)
for item in tree.iter('maintag'):
  my_content = item.find('content').text
  #print my_content
  #output: lorem

结果,它导致 my_content = ' lorem ' 而不是 - 我想看到 - 'lorem <br>ipsum</br> <strong> dolor sit</strong> 等等'

如何将内容阅读为'lorem < br>ipsum</br> <strong> dolor sit</strong> 等'?

注意:内容标签可能有另一个html标签而不是strong。并且可能根本没有它们。

4

1 回答 1

1
from lxml import etree
root = etree.fromstring('''<xml>
<maintag>    
<content> lorem <br>ipsum</br> <strong> dolor sit </strong> and so on </content>
</maintag>
</xml>''')
for content in root.xpath('.//maintag/content'):
    print etree.tostring(content)

印刷

<content> lorem <br>ipsum</br> <strong> dolor sit </strong> and so on </content>

....
for content in root.xpath('.//maintag/content'):
    print ''.join(child if isinstance(child, basestring) else etree.tostring(child)
                  for child in content.xpath('*|text()'))

印刷

 lorem <br>ipsum</br>  <strong> dolor sit </strong> and so on  and so on
于 2013-11-07T12:24:49.230 回答