我有一个XML文件。 例如:
awaitTermination()
如果<string name="example1">example1</string>
<string name="example2">example2</string>
<string name="example3" warning="true">example3</string>
<string name="example4">example4</string>
<string name="example5"warning="true">example5</string>
<string name="example6">example6</string>
,我想创建一个包含<WARNING[[" "]]>
的脚本。
目的是:
warning="true"
我创建了脚本:
<string name="example1">example1</string>
<string name="example2">example2</string>
<string name="example3" warning="true"><WARNING[[example3]]></string>
<string name="example4">example4</string>
<string name="example5"warning="true"><WARNING[[example5]]></string>
<string name="example6">example6</string>
但它不起作用。
答案 0 :(得分:1)
你的xml似乎不是一个单独的xml文档,除非你只粘贴了它的一部分,但是下面的内容应该有效:
require 'nokogiri'
output=File.open("./#{ARGV[0]}").readlines.map do |line|
doc = Nokogiri::XML(line)
doc.xpath("//string[@warning='true']").map{|m| m.content = "WARNING[[\"{m.text}\"]]"}
doc.root.to_s
end.join("\n")
f = File.new("test.xml", "w") {|f| f.write(output) }
如果您实际传入一个xml文档但需要进行轻微修改,但它们相当简单。
答案 1 :(得分:0)
我怎么看:
input.gsub(/(<string name=".*?" warning="true">)(.*?)(<\/string>)/, '\1<WARNING[[\2]]>\3')
将对某个群组的引用用作\n
,其中n
是一个群组号