ET中的评论:不只是评论标签

我有一个xml文件,例如:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Chapter PUBLIC 'blub' 'blub.dtd'>
<Chapter>
    <Tag>
        <TagEntry y.validity.allowed="true" y.validity.mode="positive">
            <!--Kommentar 1-->
            <!--Kommentar 2-->
            <!--Kommentar 3-->Inhalt 1<!--Kommentar 4--></TagEntry>
        <TagEntry>
            Inhalt 2 erg&#228;nzt <!--Kommentar 5-->mit Umlaut
        </TagEntry>
        <TagBase>
            <!--Kommentar 6-->
            <!--Kommentar 7-->Inhalt 3</TagBase>
        <TagNothing>
            Inhalt 3<!--Kommentar 8-->
        </TagNothing>
    </Tag>
</Chapter>

现在,我想遍历评论。 我用lxml.etree作为ET-tree做到了:

comments = root.xpath('//comment()')
for comment in comments:
    print(ET.tostring(comment))

但不是打印所有注释,而没有来自父节点的文本,而是打印以下内容:

b'<!--Kommentar 1-->'
b'<!--Kommentar 2-->'
b'<!--Kommentar 3-->Inhalt 1'
b'<!--Kommentar 4-->'
b'<!--Kommentar 5-->mit Umlaut\n\t\t'
b'<!--Kommentar 6-->'
b'<!--Kommentar 7-->Inhalt 3'
b'<!--Kommentar 8-->\n\t\t'

有人可以向我解释为什么会发生这种情况,以及如何更改xpath-expression以仅返回注释节点而不将文本附加到注释末尾​​。

谢谢!

qzc105 回答:ET中的评论:不只是评论标签

注释节点包含print(ET.tostring(comment)) 文本(默认值;请参见count() for list in python)。

要摆脱尾巴,改变

print(ET.tostring(comment,with_tail=False))

print(comment.text)

如果您只对注释的内容感兴趣而不对标记感兴趣,请使用以下方法:

nvcc
本文链接:https://www.f2er.com/3143534.html

大家都在问