Чтение и запись XML-файла с помощью Nokogiri

Я новичок в рубиновом камне Нокогири. Мне интересно, как читать и записывать обратно в файл xml. Требование состоит в том, чтобы я проанализировал XML-файл, внес некоторые изменения и сохранил его.

f = File.open("elevate.xml")
xml = Nokogiri::XML(f)
query = Nokogiri::XML::Node.new "query", xml
query["text"] = "bank"
query.parent = xml.root

f.close

Этот приведенный выше код вообще не вносит никаких изменений в этот файл. Нужно ли создавать новый файл, чтобы сохранить его обратно?


person Chamnap    schedule 22.07.2010    source источник


Ответы (1)


Вы можете получить XML-текст вашего документа в виде строки, используя xml.to_xml, а затем записать его в файл обычным способом.

person mikej    schedule 22.07.2010
comment
Думаю, нокогири справится с этим автоматически. Хорошо, это, возможно, единственный способ сделать это. - person Chamnap; 22.07.2010
comment
Подробности были бы более полезными, но неплохо знать файл .to_xml. Поскольку Nokogiri, похоже, добавляется к моему файлу вместо замены target, как я ожидал. - person Drew; 29.09.2010
comment
@ Дрю, какой код вы используете, что приводит к добавлению, а не к замене? - person mikej; 30.09.2010
comment
Добавление связано с использованием File.open('path','r+'). Я обнаружил, что мне нужно открыть файл File.open('path','r'), а затем, чтобы изменить файл, я сделал отдельный File.open('path','w'). Я не смог найти способ использовать один и тот же указатель файла для чтения и записи (r+ просто добавляется) - person Drew; 30.09.2010