Chciałbym użyć Nokogiri do wstawienia węzłów do dokumentu XML. Nokogiri używa klasy Nokogiri::XML::Builder
do wstawiania lub tworzenia nowego XML.Formatowanie Nokogiri i XML podczas wstawiania tagów
Jeśli utworzyć XML przy użyciu metody new
, jestem w stanie stworzyć miłą, sformatowany XML:
builder = Nokogiri::XML::Builder.new do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
wyprowadza następujące:
<?xml version="1.0"?>
<product>
<test>hi</test>
</product>
To świetnie, ale co ja chcesz zrobić, to dodać powyższy kod XML do istniejącego dokumentu, a nie tworzyć nowego dokumentu. Zgodnie z dokumentacją Nokogiri, można to zrobić za pomocą metody with
budowniczym, na przykład tak:
builder = Nokogiri::XML::Builder.with(document.at('products')) do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
Kiedy to zrobić, jednak XML wszystko zostanie wprowadzone w jednym wierszu bez wcięcia. Wygląda to tak:
<products><product><test>hi</test></product></products>
Czy brakuje mi czegoś, aby poprawnie sformatować?
Szukałem flagą na drugi dzień, kiedy zobaczyłem Twoje pytanie, ale rozpraszało Cię golenie. +1 do ciebie za znalezienie odpowiedzi i wysłanie go, i +1 do Nokogiri za kołysanie. –
zrozumiałe. te jakki się nie golą (jeszcze). – michaelmichael
Zauważ, że pod Ruby 1.9 możesz podać flagę pojedynczego noblanksa w nieco bardziej zwięzły sposób: 'doc = Nokogiri :: XML (xml, &: noblanks)' – Phrogz