#ruby #xml #nokogiri
#ruby #xml #nokogiri
Вопрос:
У меня есть следующий код:
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.myRoot do |xml|
xml.oneChild
xml.anotherChild
end
end
Теперь я хочу добавить несколько дочерних узлов к myRoot с помощью builder (на втором шаге я знаю, как их сразу добавить). Как я могу это сделать?
Я пробовал это:
node = builder.doc.xpath('//myRoot/oneChild').first
Nokogiri::XML::Builder.with(node) do |xml|
xml.childOfOneChild 'Im a child of oneChild'
end
Что не работает. Они не будут привязываться к элементу, это просто пустой дочерний элемент.
Ответ №1:
Ваш код выдает следующий XML, который, похоже, соответствует вашим спецификациям. Во всяком случае, это не приводит к созданию пустого oneChild
файла. Если это не то, что вы ищете, можете ли вы сказать нам, каким был бы ваш идеальный результат?:
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.myRoot do |xml|
xml.oneChild
xml.anotherChild
end
end
puts builder.to_xml
# <?xml version="1.0" encoding="UTF-8"?>
# <myRoot>
# <oneChild/>
# <anotherChild/>
# </myRoot>
node = builder.doc.xpath('//myRoot/oneChild').first
Nokogiri::XML::Builder.with(node) do |xml|
xml.childOfOneChild 'Im a child of oneChild'
end
puts builder.to_xml
# <?xml version="1.0" encoding="UTF-8"?>
# <myRoot>
# <oneChild>
# <childOfOneChild>Im a child of oneChild</childOfOneChild>
# </oneChild>
# <anotherChild/>
# </myRoot>
Комментарии:
1. Интересно, где находится OP? у меня это сработало, большое спасибо. документация: rdoc.info/github/tenderlove/nokogiri/master/Nokogiri/XML /…