用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。 您有但没有
。