首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lxml Xml解析

lxml Xml解析
EN

Stack Overflow用户
提问于 2013-11-06 13:19:20
回答 1查看 137关注 0票数 0
代码语言:javascript
复制
<xml>
<maintag>    
<content> lorem ipsum <strong> dolor sit </strong> and so on </content>
</maintag>
</xml>

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

在这里,我如何解析文件:

代码语言:javascript
复制
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 ipsum

因此,结果是my_content = 'lorem‘,而不是我想看到的-which -’,等等。‘

我怎样才能把内容读成“lorem ipsum dolor”等等?

注意:内容标签可能有另一个标签,而不是强标记。可能根本就没有它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-06 13:23:32

属性仅返回第一个子元素之前的文本。

尝试以下几个方面:

代码语言:javascript
复制
>>> from lxml import etree
>>> from StringIO import StringIO
>>> xmlFile = '''
... <xml>
... <maintag>
... <content> lorem ipsum <strong> dolor sit </strong> and so on </content>
... </maintag>
... </xml>
... '''
>>> parser = etree.XMLParser(remove_blank_text=False)
>>> tree = etree.parse(StringIO(xmlFile), parser)
>>> for my_content in tree.xpath('maintag/content//text()'):
...       print my_content
...
 lorem ipsum
 dolor sit
 and so on

或者:

代码语言:javascript
复制
>>> for my_content in tree.find('maintag/content').itertext():
...     print my_content
...
 lorem ipsum
 dolor sit
 and so on


>>> ' '.join(tree.find('maintag/content').itertext())
' lorem ipsum   dolor sit   and so on '
>>> ' '.join(t.strip() for t in tree.find('maintag/content').itertext())
'lorem ipsum dolor sit and so on'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19813192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档