加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中迭代xml元素时遗漏了一些文本

发布时间:2020-12-20 12:20:56 所属栏目:Python 来源:网络整理
导读:我在Mac OS X 10.6.8上的 Python 2.7.3中运行以下代码. import StringIOfrom lxml import etreef = open('./foo','r')doc = ""while 1: line = f.readline() doc += line if line == "": breaktree = etree.parse(StringIO.StringIO(doc),etree.HTMLParser()
我在Mac OS X 10.6.8上的 Python 2.7.3中运行以下代码.

import StringIO
from lxml import etree
f = open('./foo','r')
doc = ""
while 1:
    line = f.readline()
    doc += line
    if line == "":
        break
tree = etree.parse(StringIO.StringIO(doc),etree.HTMLParser())
r = tree.xpath('//foo')
for i in r:
    for j in i.iter():
        print j.tag,j.text

文件foo包含

<foo> AAA <bar> BBB </bar> XXX </foo>

输出是

foo AAA
bar BBB

为什么我没有收到XXX的文字?我该如何访问它?

谢谢

解决方法

试试这个:

from lxml import etree

tree = etree.fromstring("<foo> AAA <bar> BBB </bar> XXX </foo>")
foos = tree.xpath('//foo')

for foo in foos:
    for j in foo.iter():
        print j.tag,j.text,j.tail

输出:

foo  AAA  None
bar  BBB   XXX

tail属性将文本保存在元素的结束标记之后.

与其他XML模型(如DOM)相比,tail是lxml和ElementTree的特性.有关更多信息,请参见http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/etree-view.html.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读