我在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?我该如何访问?
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属性将文本保留在元素的结束标记之后。
tail
tail与其他XML模型(例如DOM)相比,lxml和ElementTree具有特殊性。有关更多信息,请参见http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/etree- view.html。