2017-08-30 5 views
1

C'est ce que je suis en train de faire:Comment ajouter un attribut au générateur XML Nokogiri?

xml = Nokogiri::XML::Builder.new do |x| 
    x.root do 
    x.book do 
     x.attribute('isbn', 12345) # Doesn't work! 
     x.text("Don Quixot") 
    end 
    end 
end.doc 

Je sais que je peux faire x.book(isbn: 12345), mais ce n'est pas ce que je veux. Je veux ajouter un attribut du bloc do/end. Est-ce possible?

Le XML attendu:

<root> 
    <book isbn="12345">Don Quixot</book> 
</root> 
+0

Pouvez-vous fouetter manuellement certains XML pour nous donner un visuel de ce que vous essayez de créer? – ddubs

+0

@ddubs vient de mettre à jour la réponse, voir ci-dessus – yegor256

Répondre

2

Ajouter les attributs au nœud comme celui-ci

xml = Nokogiri::XML::Builder.new do |x| 
    x.root do 
    x.book(isbn: 1235) do 
     x.text('Don Quixot') 
    end 
    end 
end.doc 

Ou, après re-relire votre question peut-être vous vouliez ajouter au parent plus loin dans la faire un bloc. Dans ce cas, cela fonctionne:

xml = Nokogiri::XML::Builder.new do |x| 
    x.root do 
    x.book do 
     x.parent.set_attribute('isbn', 12345) 
     x.text('Don Quixot') 
    end 
    end 
end.doc 

Génère:

<?xml version="1.0"?> 
<root> 
    <book isbn="1235">Don Quixot</book> 
</root>