首页 文章

lxml xml使用xml标记内的html标记进行解析

提问于
浏览
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 ' instead of -which i' d喜欢看 - ' lorem < br >ipsum< /br> < strong > dolor sit < /strong > and so on'

我如何阅读内容为“lorem \ n> ipsum </ br> <strong> dolor sit </ strong>等等?”

注意:内容标记可能包含其他html标记而不是强标记 . 可能根本没有它们 .

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
    

相关问题