加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby / REXML:从XPath更改标记值

发布时间:2020-12-17 01:29:52 所属栏目:百科 来源:网络整理
导读:我有一个基本 XML,我需要通过 Ruby脚本进行修改. XML看起来像这样: ?xml version="1.0" encoding="UTF-8"? config nameSo and So/name /config 我可以打印 name的值: require 'rexml/document'include REXMLxmlfile = File.new("some.xml")xmldoc = Docume
我有一个基本 XML,我需要通过 Ruby脚本进行修改. XML看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
    <config>
        <name>So and So</name>
    </config>

我可以打印< name>的值:

require 'rexml/document'
include REXML

xmlfile = File.new("some.xml")
xmldoc = Document.new(xmlfile)

name = XPath.first(xmldoc,"/config/name")
p name.text # => So and so

我想做的是用其他东西来改变价值(“一如既往”).我似乎无法找到该用例的任何示例(在文档中或其他方面).甚至可以在Ruby 1.9.3中做到吗?

解决方法

使用Chris Heald回答我设法用REXML做到了这一点 – 不需要Nokogiri.诀窍是使用XPath.each而不是XPath.first.

这有效:

require 'rexml/document'
include REXML

xmlfile = File.new("some.xml")
xmldoc = Document.new(xmlfile)

XPath.each(xmldoc,"/config/name") do|node|
  p node.text # => So and so
  node.text = 'Something else'
  p node.text # => Something else
end

xmldoc.write(File.open("somexml","w"))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读