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文件有關的邏輯問題的幫助。上面的代碼創建一個帶有「揚聲器」名稱的文件,然後它應該將發言者說的內容放入該文件中。Ruby XML從一個XML讀取並解析爲另一個
我遇到的問題是它將所有揚聲器放在同一個文件中。所以我想這個問題就出在這裏:
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文件中的每個人的演講放在了一起。 – CodeHard