Mi piacerebbe utilizzare Nokogiri per inserire i nodi in un documento XML. Nokogiri usa la classe Nokogiri::XML::Builder
per inserire o creare un nuovo XML.Nokogiri e formattazione XML quando si inseriscono i tag
Se creo XML utilizzando il metodo new
, io sono in grado di creare bello, in formato XML:
builder = Nokogiri::XML::Builder.new do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
emette il seguente:
<?xml version="1.0"?>
<product>
<test>hi</test>
</product>
che è grande, ma quello che ho voglio fare è aggiungere l'XML sopra ad un documento esistente, non creare un nuovo documento. Secondo la documentazione Nokogiri, questo può essere fatto utilizzando il metodo del costruttore with
, in questo modo:
builder = Nokogiri::XML::Builder.with(document.at('products')) do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
Quando faccio questo, però, l'XML tutto viene messo in una sola riga senza solco. Ecco come si presenta:
<products><product><test>hi</test></product></products>
mi sto perdendo qualcosa per farlo formattare correttamente?
ero alla ricerca di una bandiera, l'altro giorno, quando ho visto la tua domanda, ma si è distratta rasando uno yak. +1 a te per trovare la risposta e pubblicarla, e +1 a Nokogiri per dondolare. –
comprensibile. quegli yak non si radono (ancora). – michaelmichael
Si noti che sotto Ruby 1.9 è possibile specificare il flag single noblanks in maniera leggermente più concisa: 'doc = Nokogiri :: XML (xml, &: noblanks)' – Phrogz