【发布时间】:2014-05-25 07:01:56
【问题描述】:
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
你好 stackoverflow 我正在寻求帮助解决我在使用 XML 文件时遇到的逻辑问题。上面的代码创建了一个名为“speakers”的文件,然后它将说话者所说的内容放入该文件中。
我遇到的问题是将所有扬声器放入同一个文件中。所以我认为问题出在此处:
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 文件中的示例。
【问题讨论】:
-
element.text还不够吗? -
很遗憾不是,问题是源 XML 文件有数百个演讲者和数百个演讲。当前代码正在正确创建文件,但将每个人的演讲放入所有创建的 XML 文件中。
标签: ruby xml nokogiri builder rexml