2010-11-22 12 views
2

Ich habe ein Problem beim Setzen eines cdata-Knotens mit jquery. Cdata kann leicht mit der Funktion .text() erstellt werden, aber wenn ich .text ('jquery> handy') verwende, wird kein cdata-Knoten erstellt.jquery set xml cdata

Das ist mein procecure: ich Formulardaten in XML erhalten in einer Form so etwas zu laden:

<formdata> 
    <field id="title"><![CDATA[Some title]]></field> 
    <field id="description"><![CDATA[Some description]]></field> 
</formdata> 

Ich benutze cdata Knoten, weil ein Feld alle Arten von Sonderzeichen enthalten. Dann lade ich die Daten in das Formular, indem ich den Knoten Inhalt mit .text()

Wenn der Benutzer das Formular, ich aktualisiere das XML und wandeln es in ein Stachel, um es auf dem Server zu veröffentlichen. Ich weiß, dass ich die Felder einfach posten konnte, aber ich habe einige gute Gründe, sie in ein XML-Dokument zu schreiben. Alles funktioniert sehr gut, aber nicht, wenn der Benutzer einige Eingaben mit Sonderzeichen macht. Dies ist, wie ich den Wert des Knotens gesetzt (in diesem Beispiel des „descriptioon Knoten“)

domdoc.find('field[id="description"]').text($("#description").val()); 

So ist der Knoten verwendet cdata sein, aber die .text() Funktion entfernt das. Ich Alo dies versucht:

domdoc.find('field[id="description"]').text('<![CDATA[' + $("#description").val() + ']]>'); 

dies auch nicht funktioniert, weil .text() < zu & gt ändert;

Hat jemand eine Lösung? Meine Inspiration ist weg .....

Danke, Simon

Antwort

0

Gerade gesetzt Text, ohne <![CDATA[ hinzufügen. CDATA ist nur eine der Möglichkeiten, Text in XML zu umgehen, aber da jQuery für Sie entweicht, müssen Sie keine andere Methode verwenden. &lt; ist genauso gut wie <![CDATA[<]]>. Für XML-Anwendungen sind sie identisch.

+0

Danke porneL, Ich werde versuchen, es so herauszufinden. – simon

+0

Dank dir habe ich es herausgefunden! Dennoch, es ist ein bisschen komisch, dass man die cdata-Funktion nicht benutzen kann. – simon

+0

Das hilft Ihnen völlig nicht, wenn Sie zum Beispiel möchten, dass jemand HTML in Ihr XML einfügen kann. Wie zB hier.]]> – Spider

3

Einfache Lösung. Erstellen Sie einen CData-Abschnittsknoten und fügen Sie ihn an Ihren XML-Code an. Ich kämpfte mit dem JQuery .text() ohne Glück. Das hat fantastisch funktioniert.

  var cDataSection = self.xmlDocument.createCDATASection(text); 
      $(element).empty(); 
      $(element).append(cDataSection);