迭代python中的xml元素时缺少一些文本

发布于 2021-01-29 15:05:41

我在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?我该如何访问?

谢谢

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    尝试这个:

    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属性将文本保留在元素的结束标记之后。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看