用nokogiri更新节点打开xml文件并保存

我试图弄清楚如何打开一个xml文件,按id搜索,替换节点中的值,然后重新保存文档。

我的xml

   1@1.com false   2@2.com false   3@3.com false   4@4.com false   5@5.com false   

我的代码打开并找到一个节点

 xml_content = File.read("/home/mike/app/users.xml") doc = Nokogiri::XML(xml_content) node_update = doc.search("//user[@id='1370028588345'] //sent") node_update.inner_html ##returns value of "sent" 

我卡住的部分实际上是更新节点。 node_update.inner_html = "true"inner_html上返回方法错误。 之后保存更新的文件。

首先,您的node_update实际上是一个NodeSet ,而不是您可能认为的Node 。 如果要在其上调用inner_html= ,则需要一个Node

 node_update[0].inner_html = 'true' 

然后写出更新的XML只是一些标准的文件操作与to_xml调用相结合:

 File.open('whatever.xml', 'w') { |f| f.print(doc.to_xml) } 

另外,您的输入不是有效的XML。 您有但没有