gpt4 book ai didi

ruby - 如何将 Nokogiri 与 Ruby 结合使用来替换现有 xml 中的值?

转载 作者:数据小太阳 更新时间:2023-10-29 01:54:50 26 4
gpt4 key购买 nike

我正在使用带有最新 Nokogiri gem 的 Ruby 1.9.3。我已经弄清楚如何使用 xpath 从 xml 中提取值并指定元素的路径(?)。这是我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<File xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Houses>
<Ranch>
<Roof>Black</Roof>
<Street>Markham</Street>
<Number>34</Number>
</Ranch>
</Houses>
</File>

我使用这段代码来打印一个值:

doc = Nokogiri::XML(File.open ("C:\\myfile.xml"))  
puts doc.xpath("//Ranch//Street")

哪些输出:

<Street>Markham</Street>

一切正常,但我需要的是写入/替换值。我想使用相同类型的路径式查找来传递一个值来替换那里的值。所以我想将街道名称传递给此路径并覆盖那里的街道名称。我在互联网上到处都是,但只能找到创建新 XML 或在文件中插入全新节点的方法。有没有办法像这样按行替换值?谢谢。

最佳答案

你想要 content= method :

Set the Node’s content to a Text node containing string. The string gets XML escaped, not interpreted as markup.

请注意 xpath返回一个 NodeSet 而不是单个节点,因此您需要使用 at_xpath 或以其他方式获取单个节点:

doc = Nokogiri::XML(File.open ("C:\\myfile.xml"))  
node = doc.xpath("//Ranch//Street")[0] # use [0] to select the first result
node.content = "New value for this node"

puts doc # produces XML document with new value for the node

关于ruby - 如何将 Nokogiri 与 Ruby 结合使用来替换现有 xml 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296582/

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