3

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ですか? どうすればアクセスできますか?

ありがとう

4

2 に答える 2

7

これを試して:

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属性は、要素の終了タグの後のテキストを保持します。

tailDOMなどの他のXMLモデルと比較したlxmlおよびElementTreeの特性です。詳細については、 http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/etree-view.htmlを参照してください。

于 2012-09-13T18:28:20.117 に答える
6

あなたも取る必要があります

node.tail

考慮します(または確認します)。

于 2012-09-13T18:13:20.267 に答える