【发布时间】:2025-12-04 08:30:01
【问题描述】:
我需要从这个 xml 中删除以下内容 -
<entry>
<id>1234</id>
<title>hello</title>
<source>com.server.webclient.xxx</source>
<xxx:component>
<xxx:id>2134</xxx:id>
<xxx:name>name</xxx.name>
</xxx:component>
</entry>
我想要做的是删除<entry>、<id>、<title> 和<source>
我的代码现在只是尝试删除 ID,但没有返回错误,但没有删除值。
with open('c:\\temp\\%s.xml' % args.componentName, 'w') as f:
xmlObject = etree.fromstring(r.content)
for elem in xmlObject.xpath( '//id' ) :
elem.remove(elem)
f.write(etree.tostring(xmlObject, pretty_print=True))
这就是我希望我的 XML 看起来的样子 -
<xxx:component>
<xxx:id>2134</xxx:id>
<xxx:name>name</xxx.name>
</xxx:component>
【问题讨论】:
-
如果你没有收到任何错误,那么这意味着
xmlObject.xpath('//id')没有返回任何结果,因为如果你每次都尝试做 -elem.remove(elem),你会遇到问题 -ValueError: Element is not a child of this node.跨度> -
鉴于此,从 xml 中获取
<xxx:component>元素并将其单独写入另一个 xml 文件不是更容易吗? -
关于您的第二点更有可能是更好的解决方案?我会看看我的 googlefu 会出现什么选项。