1
我遇到命令查找问题,它不工作。但是,理论上它应该是有效的。lxml tree.find无法正常工作
比方说,我有这样的XML文件:
<?xml version="1.0">
<pxml name="es">
things here
</pxml
我想找到的元素PXML添加有一个属性。所以我用这个代码:
from lxml import etree as et
lang = 'de'
tree = et.parse("file.xml")
root = tree.getroot()
txml_element = root.find('//pxml')
txml_element.attrib['language'] = lang
我收到以下错误信息:
SyntaxError: cannout use absolute path on element
另外,如果我不这样做的tree.getroot我用的是发现在树上,我总是无元素。我错过了什么?
我不明白为什么我收到此消息错误。如果只使用root.find('pxml'),它将返回None。
然而,使用XPath我得到的元素的列表,它的工作原理:
lang = 'de'
tree = et.parse("file.xml")
root = tree.getroot()
txml_elements = root.xpath('//pxml')
for element in txml_elements:
element.attrib['language'] = lang
print(element.attrib)
#print (et.tostring(tree))
谢谢你:)它在这里工作。但是,如果我需要查找树中间的元素,我将继续遇到同样的问题,因此无法使用查找,因为它返回None或错误提及的错误。 – TMikonos
U可以通过名称查找子元素 - root.find('childnode') https://repl.it/IzNt/4 – hemn