2011-04-08 26 views
5

Aşağıdaki kod var:ekleme elemanları :: Oluşturucu

builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml| 
    xml.myRoot do |xml| 
    xml.oneChild 
    xml.anotherChild 
    end 
end 

Şimdi ikinci bir adımda oluşturucu (kullanarak myRoot için birkaç alt düğümleri eklemek istediğiniz, nasıl olduğunu hemen onları eklemek için). Bunu nasıl yapabilirim?

Bu denedim: çalışmıyor Hangi

. Öğeye yapışmayacaklar, sadece boş birChild.

cevap

13

Kodunuz, teknik özelliklerinizi karşıladığı anlaşılan aşağıdaki XML'yi üretir. Herhangi bir oranda boş bir oneChild üretmez. Bu sizin aradığınız şey değilse, ideal çıktınızın ne olacağını bize söyleyebilir misiniz?

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> 
+0

Acaba OP nerede? Bu benim için çalıştı, çok teşekkürler. dokümantasyon: http://rdoc.info/github/tenderlove/nokogiri/master/Nokogiri/XML/Builder/.with – tokland