我有以下字符串,它是较大的XML文档的一部分:
content =' Rathaus '
我想访问 Rathaus
。我当前的方法是使用lxml解析它,并尝试访问元素'odvNameElem'的文本:
内容=' Rathaus '
根= etree.fromstring(内容)
打印(root.text)
这将导致无。我在做什么错了?
etree .__ version__ ='4.2.5'
我不确定以下原因:
root.xpath(“ string()”)
,但 root.xpath(“ // text()”)
仅返回一个空列表。有人可以解释一下吗?
答案 0 :(得分:2)
“ Rathaus”字符串是tail
元素的itdMapItemList
属性的值。范例:
root.xpath("itdMapItemList")[0].tail
root.find("itdMapItemList").tail
请参见https://lxml.de/tutorial.html#elements-contain-text。
root.xpath("string()")
返回根节点及其后代的字符串值的串联,在这种情况下,它的确是“ Rathaus”。
请参见https://www.w3.org/TR/xpath-10/#function-string。
root.xpath("//test")
没有意义(没有test
元素)。您是说root.xpath("//text()")
吗?
root.xpath("//text()")
返回所有文本节点的列表,在这种情况下为['Rathaus']
。
如果输入XML更改为
<odvNameElem stopID="9001002">ABC<itdMapItemList/>Rathaus</odvNameElem>
那么结果就是['ABC', 'Rathaus']