XML Node auskommentieren

buenji

Cadet 2nd Year
Registriert
Dez. 2010
Beiträge
22
Hey ich habe folgendes Problem:

Ich möchte in Java anhand von XPATH eine bestimmte Node auskommentieren.

Code:
<ls>
	    <language lang="en">English</language>
	    <language lang="de">Deutsch</language>
</ls>

also wenn ich im Frontend nun den Haken bei deutsch rausmache sollte die zweite Zeile in diesem bsp. auskommentiert werden..

wie mache ich das?
ich habe schon versucht 2 eigene Nodes anzulegen eine davor eine danach:

org.w3c.dom.Element commentBegin = document.createElement("!--");
org.w3c.dom.Element commentEnd = document.createElement("--");

error: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified.
scheint wohl geschützt zu sein die zeichenfolge :-/

hat jemand ne kluge idee?
 
@hostile
also ich finde zumindest keine.. es gibt nur methoden um die attribute und das CDATA zu manipulieren..
Ich kann auch eine neue Comment Node erstellen, welcher ich aber nur ein string übergeben kann und nicht eine Node.. echt zum verzweifeln^^
 
ein comment enthält keine nodes, sondern nur strings. insofern musst du die node entfernen, zu nem string konvertieren und in den comment node einfügen.
 
so also nachdem ich im www nicht fündig wurde hab ichs einfach dumm von hand gecoded.. falls es jemand mal nützlich sein sollte hier bitte:

Node node = nl.item(0);
String tagName = "<language lang=\"";
String attributeValue = node.getAttributes().getNamedItem("lang")
.getNodeValue();
String tagNameEnd = "\">";
String cdata = node.getFirstChild().getNodeValue();
String tagNameClosing = "</language>";

String comment = tagName + attributeValue + tagNameEnd + cdata
+ tagNameClosing;

Comment commentNode = document.createComment(comment);
Node parent = node.getParentNode();
parent.removeChild(node);
parent.appendChild(commentNode);

[edit]
genau die Lösung von IceMAtrix wie ich gerade sehe :-) dachte da müsste es doch schon ne schöne methode geben wo man einfach ein node reingibt und man dieses auskommentiert bekommt..
 
Zurück
Oben