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.
Wenn ich XML mit der Methode new
erstelle, kann ich schönes, formatiertes XML erstellen:
gibt Folgendes aus:
%Vor% Das ist großartig, aber was ich tun möchte, ist das Hinzufügen des obigen XML zu einem bestehenden Dokument, nicht das Erstellen eines neuen Dokuments. Gemäß der Nokogiri-Dokumentation kann dies mithilfe der with
-Methode des Builders wie folgt durchgeführt werden:
Wenn ich das tue, wird das XML jedoch in eine einzige Zeile ohne Einrückung eingefügt. Es sieht so aus:
%Vor%Fehle ich etwas, damit es richtig formatiert wird?
Finden Sie die Antwort in der Nokogiri-Mailingliste:
%Vor%In XML können Leerzeichen berücksichtigt werden sinnvoll. Wenn Sie ein Dokument analysieren das enthält Leerzeichen, libxml2 wird diesen Whitespace annehmen Knoten sind sinnvoll und nicht füge sie für dich ein.
Sie können libxml2 das Whitespace mitteilen ist nicht sinnvoll, indem Sie die "noblanks" -Flag zum Parser. Zu demonstrieren, hier ist ein Beispiel dafür reproduziert Ihren Fehler und macht dann was Sie möchten:
Ausgabe:
%Vor%