Ich möchte Nokogiri verwenden, um Knoten in ein XML-Dokument einzufügen. Nokogiri verwendet die Klasse Nokogiri::XML::Builder
, um neues XML einzufügen oder zu erstellen.Nokogiri und XML-Formatierung beim Einfügen von Tags
Wenn ich XML erstellen mit der new
Methode, ich bin in der Lage schön, formatiert XML zu erstellen:
builder = Nokogiri::XML::Builder.new do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
gibt das folgende:
<?xml version="1.0"?>
<product>
<test>hi</test>
</product>
Das ist großartig, aber, was ich Ich möchte das obige XML zu einem vorhandenen Dokument hinzufügen und kein neues Dokument erstellen. Nach Angaben der Nokogiri Dokumentation, kann dies durch Verwendung des with
Methode des Builder durchgeführt werden, etwa so:
builder = Nokogiri::XML::Builder.with(document.at('products')) do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
Wenn ich dies tun, aber die XML alle in eine einzige Zeile ohne Einzug gelegt werden. Es sieht so aus:
<products><product><test>hi</test></product></products>
Fehle ich etwas, um es richtig zu formatieren?
Ich war auf der Suche nach einem Flagge neulich, als ich sah, Ihre Frage, aber wurde abgelenkt, ein Yak rasierend. +1 für Sie, um die Antwort zu finden und es zu veröffentlichen, und +1 an Nokogiri für das Schaukeln. –
verständlich. diese Yaks rasieren sich (noch) nicht. – michaelmichael
Beachten Sie, dass Sie unter Ruby 1.9 das einzelne Noblanks-Flag etwas knapper spezifizieren können: 'doc = Nokogiri :: XML (xml, &: noblanks)' – Phrogz