gpt4 book ai didi

ruby - 如何根据其子项之一的值删除 XML 元素?

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:24 24 4
gpt4 key购买 nike

我有一个看起来像这样的 xml 元素:

<Description>
<ID>1234</ID>
<SubDescription>
<subID>4501</subID>
</SubDescription>
<SubDescription>
<subID>4502</subID>
</SubDescription>
</Description>

如何根据其“ID”子元素的值删除整个“Description”元素?

最佳答案

您可以使用以下 xpath 来选择包含值为 1234 的 ID 节点的描述节点:

//Description[./ID[text()='1234']]

所以要删除节点,你可以这样做:

doc.xpath("//Description[./ID[text()='1234']]").remove

例子:

require 'nokogiri'

str = %q{
<root>
<Description>
<ID>2222</ID>
<SubDescription>
<subID>4501</subID>
</SubDescription>
<SubDescription>
<subID>4502</subID>
</SubDescription>
</Description>
<Description>
<ID>1234</ID>
<SubDescription>
<subID>4501</subID>
</SubDescription>
<SubDescription>
<subID>4502</subID>
</SubDescription>
</Description>
</root>
}
doc = Nokogiri::XML(str)
doc.xpath("//Description[./ID[text()='1234']]").remove
puts doc
#=> <root>
#=> <Description>
#=> <ID>2222</ID>
#=> <SubDescription>
#=> <subID>4501</subID>
#=> </SubDescription>
#=> <SubDescription>
#=> <subID>4502</subID>
#=> </SubDescription>
#=> </Description>
#=></root>

如您所见,所需的描述节点已删除。

关于ruby - 如何根据其子项之一的值删除 XML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com