removeChild() : wie zu entfernen Spiegelstrich, zu?
Betrachten Sie das folgende XML-Dokument:
<items>
<item>item1</item>
<item>item2</item>
</items>
Nun, lassen Sie uns entfernen Sie alle Elemente und fügen Sie einige neue Elemente. Code:
//-- assume we have Element instance of <items> element: items_parent
// and the Document instance: doc
//-- remove all the items
NodeList items = items_parent.getElementsByTagName("item");
for (int i = 0; i < items.getLength(); i++){
Element curElement = (Element)items.item(i);
items_parent.removeChild(curElement);
}
//-- add a new one
Element new_item = doc.createElement("item");
new_item.setTextContent("item3");
items_parent.appendChild(new_item);
Neuer Inhalt der Datei:
<items>
<item>item3</item>
</items>
Diese lästigen Leerzeilen erschien, weil removeChild()
entfernt Kind, aber es lässt Einzug entfernt Kind und Zeilenumbruch zu. Und diese indent_and_like_break behandelt wird wie ein text-content, der Links im Dokument.
In der stellt sich die Frage, ich gepostet Problemumgehung:
items_parent.setTextContent("");
Es entfernt diese leeren Zeilen. Aber dies ist eine Art von hack, entfernt es die Wirkung, nicht die Ursache.
So, die Frage ist, über die Beseitigung der Ursache: wie zu entfernen Kind mit seiner Absicht, mit Zeilenumbruch?
- Check this
- Vielen Dank, das löste das Problem für mich. Sie können diese wie eine Antwort, und ich werde es akzeptieren. Oder, die Frage ist eigentlich nicht korrekt, also, vielleicht Kennzeichnen Sie Sie als eine doppelte oder sogar zu löschen, nicht sicher..
- Wenn es Euch gefällt, bis abstimmen die verlinkten Frage
- Ich habe bereits von Ihnen positiv bewertet werden sowohl Frage-und Antwort-ohne Ihre Erwähnung, natürlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den "Einzug" vor dem element und dem "carriage return" (und die folgenden Spiegelstrich) nach ihm sind text-Knoten. Wenn Sie ein element entfernen, und es gibt einen text-Knoten, bevor oder nachdem Sie, natürlich diejenigen Knoten nicht entfernt.
Klingt es so, als wenn Sie möchten, entfernen Sie das element, und dann entfernen Sie auch den text-node in front (vorausgesetzt, es besteht nur aus Leerzeichen).
E. g., vielleicht in diese Richtung (in die Schleife entfernen von Elementen):
Jedoch, die eigentliche Frage sollte wohl sein, warum Ihr XML-Dokument hat überflüssige whitespace text nodes im es.
Eigentlich ein
XML
Dokument nicht jede Stil-Richtlinien. Daher kann man nicht außer Dokument-manipulation-Methoden zu halten Sie eine Art von Stil, um Ihr Dokument.Was ich empfehlen würde, ist in der Regel Bearbeiten Sie Ihre Datei zunächst ohne Bezug auf das format (nur um eine gültige xml-Datei dann) und danach können Sie immer führen Sie eine Formatierung über das ganze Dokument erhalten Sie Ihre gewünschte Formatierung.