Python 2.7 lxml-无法替换子对象的子对象
我在应用程序中使用lxml作为XML解析的解决方案 我知道lxml只能替换父级的直接子级,但不能使用 XML示例:Python 2.7 lxml-无法替换子对象的子对象,python-2.7,xpath,lxml,lxml.objectify,Python 2.7,Xpath,Lxml,Lxml.objectify,我在应用程序中使用lxml作为XML解析的解决方案 我知道lxml只能替换父级的直接子级,但不能使用 XML示例: <root> <dc> <batman alias='dark_knight' /> </dc> </root> 我在一个字符串中有一个修改过的标记,如下所示 <batman alias='not_dark_knight' /> 我需要一些关于使用xpath“
<root>
<dc>
<batman alias='dark_knight' />
</dc>
</root>
我在一个字符串中有一个修改过的标记,如下所示
<batman alias='not_dark_knight' />
我需要一些关于使用xpath“/root/dc/batman”替换原始XML的帮助
from lxml import etree
original_xml = "<root><dc><batman alias='dark_knight' /></dc></root>"
modified_tag = "<batman alias='not_dark_knight' />"
x_path = '/root/dc/batman'
original_obj = etree.fromstring(original_xml)
modified_obj = etree.fromstring(modified_tag)
original_obj.replace(original_obj.xpath(x_path)[0], modified_obj)
从lxml导入etree
原始_xml=“”
修改的_标签=“”
x_path='/root/dc/batman'
原始对象=etree.fromstring(原始xml)
modified_obj=etree.fromstring(modified_标记)
原始对象替换(原始对象xpath(x_路径)[0],修改的对象)
这会抛出一个ValueError:元素不是此节点的子元素。
有什么方法可以很好地替换字符串吗?(仅使用lxml)
请理解,我想要一个只使用lxml库的解决方案。正如您已经知道的,您应该在要替换的元素的父元素上调用
replace()
。您可以使用.getparent()
动态访问父级:
batman = original_obj.xpath(x_path)[0]
batman.getparent().replace(batman, modified_obj)
这对我有用。谢谢@alecxe。我可能错过了