Ruby XML从一个XML读取并解析为另一个XML

时间:2014-05-25 07:01:56

标签: ruby xml nokogiri builder rexml

XPath.each( xmldoc, "//speech/speaking") do |element| 
# puts element.attributes['name']
# puts element.text
File.open(file_name + "_" + element.attributes['name'] + "-" + year + ".xml", 'a+') do |f|
    f.write("<speaker>" + element.attributes['name'] + "</speaker>")
    f.write("<speech>" + doc.xpath('//speech/speaking').text + "</speech>" + "\n")
end
end

Hello stackoverflow我正在寻找帮助解决我对XML文件的逻辑问题。上面的代码使用&#34; speaker&#34;创建了一个文件。名称,然后它应该将发言者所说的内容放入该文件中。

我遇到的问题是它将所有扬声器放在同一个文件中。所以我在想这个问题就在这里:

f.write("<speech>" + doc.xpath('//speech/speaking').text + "</speech>" + "\n")

我希望有人有更好的方法来做到这一点,但我们的想法是将上面的代码更改为:

doc.xpath('//speech/speaking').text WHERE speaker == element.attributes['name']

最后,我想让每个发言者都有自己的XML文件,并发表自己的演讲。

<speaking name="Mr. FAZIO">I appreciate my friend yielding.</speaking>

以上是XML文件中的示例。

1 个答案:

答案 0 :(得分:0)

您正在寻找的xpath是:

doc.xpath("//speech/speaking[@name='#{element.attributes['name']}']").text

请参阅XPath to select Element by attribute value