【发布时间】:2020-08-08 17:29:30
【问题描述】:
我有一段 ruby 代码来替换属性的值:
# -*- coding: utf-8 -*-
require "nokogiri"
xml = <<-eos
<a blubb="blah">
<b>irrelevant</b>
<b>also irrelevant</b>
<b blubb="blah">
<c>irrelevant</c>
<c>irrelevant</c>
</b>
<b blubb="foo">
<c>irrelevant</c>
<c>irrelevant</c>
</b>
</a>
eos
doc = Nokogiri::XML(xml) { |config| config.noent }
doc.xpath("//*[@blubb='blah']").each {|node|
puts "Node before:\n#{node.to_s}" ## replace me!
node['blubb'] = "NEW"
puts "Node after:\n#{node.to_s}" ## replace me!
}
当我执行这段代码时,我打印了整个node 元素,但我只需要查看开始标记来确认我的脚本工作正常。有没有办法只显示node 的开始标签,或者至少只显示没有子节点的元素本身?重要的是节点本身在打印时不会改变(除了属性中的替换),因此删除子节点不是一种选择!
【问题讨论】: