JavaScript - XML: CDATA Tag auslesen

marcel_m

Mitglied
Hallo zusammen.

Das einlesen und Verarbeiten von XML Daten mit JavaScript, geht ja an sich leicht von der Hand, nur: wenn ich den "Textinhalt" eines Tags, das mit "CDATA" verknüpft ist einlese will, bekomme ich einen leeren Wert zurück.
Benötige ich für das Einlesen von CDATA Tags irgendwelche besonderen Methoden?

Vielen Dank schon mal im Voraus,

Marcel
 
Hi,...

da aus XML-Sicht CDATA nur Zeichendaten enthält, ist es ein Textknoten.
Du kannst diese Zeichendaten über die data-Eigenschaft dieses Textknotens ermitteln.

Beispiel:

xml
Code:
<root>
	<node>bla</node>
	<node><![CDATA[blubb]]></node>
</root>

js
Code:
alert(xmlDokumentObjekt.getElementsByTagName('node')[1].firstChild.data)//Ausgabe:blubb

Solltest du allerdings innerhalb von CDATA ein Element haben, und dies ansprechen wollen, geht das nicht, denn dort befinden sich für XML nur Zeichendaten.
Es übersetzt also gewissermassen bspw. dieses:
Code:
<![CDATA[<element>Text</Element>]]>

in jenes:
Code:
<![CDATA[&lt;element&gt;Text&lt;/Element&gt;]]>

Da könntest du dir behelfen, wenn du aus den ermittelten Zeichendaten einen Behelf-Dokument erstellst: http://www.tutorials.de/forum/javas...xmlhttprequest-dom-schreiben.html#post1415506
 
Zuletzt bearbeitet:
Vielen Dank! Das Problem wäre somit gelöst!
(Ich bin jedes mal erstaunt, wie rasch man hier kompetente Hilfe bekommt! Danke dafür an alle!)

Marcel
 
Jetzt muss ich mich nach langer Zeit korrigieren ;-)
Es hat sich diesbezüglich eine neue Problematik ergeben ....

Das Element kann nur ausgelesen werden, wenn es in der Selben Zeiel wie das Parent Element ist ... also:

Code:
<format font="Arial" size="12" rgb="#FFFFFF"><![CDATA[Ich bin ein Text]]></format>

und NICHT:

Code:
<format font="Arial" size="12" rgb="#FFFFFF">
  <![CDATA[
    Ich bin ein Text
    Ich auch
    Und ich auch ...
  ]]>
  </format>

Wie schaffe ich das, dass ich trotz dem zweiten "Sachverhalt" einen Wert erhalte ?

Ich bedank mich mal wie immer schon mal im Voraus

Gruß Marcel

Marcel
 
Das Element kann nur ausgelesen werden, wenn es in der Selben Zeiel wie das Parent Element ist ...

Das ist kein sonderliches Problem...es ist einfach so, dass auch Whitespaces als Knoten angesehen werden(je nach Browser)....somit ist dass CDATA-Element dann nicht mehr erster Kindknoten(firstChild) des Eltenknotens.

Wenn sich im Elternknoten nichts weiter ausser CDATA und Whitespaces befindet, könntest du alle Kindknoten(childNodes) durchlaufen und per RegExp prüfen, ob ihre data-Eigenschaft etwas anderes als Whitespaces enthält...wenn ja, hast du den rechten Knoten gefunden.
 
Zurück