# JavaScript - XML: CDATA Tag auslesen



## marcel_m (6. Mai 2007)

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


----------



## rotzlöffeli (7. Mai 2007)

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*

```
<root>
	<node>bla</node>
	<node><![CDATA[blubb]]></node>
</root>
```

*js*

```
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:

```
<![CDATA[<element>Text</Element>]]>
```

in jenes:

```
<![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


----------



## marcel_m (7. Mai 2007)

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


----------



## marcel_m (10. Juni 2007)

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:


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

und NICHT:


```
<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


----------



## Sven Mintel (10. Juni 2007)

marcel_m hat gesagt.:


> 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.


----------

