2010-11-22 6 views
2

J'ai un problème lors de la définition d'un noeud cdata avec jquery. Obtenir cdata est facilement fait avec la fonction .text(), mais si j'utilise .text ('jquery> handy'), il ne crée pas de noeud cdata.jquery set xml cdata

Ceci est mon procecure: Je reçois des données de formulaire en XML pour charger sous une forme quelque chose comme ceci:

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

J'utilise des nœuds de CDATA parce qu'un champ peut contenir toutes sortes de caractères spéciaux. Ensuite, je charge les données dans le formulaire en obtenant le contenu du nœud avec .text()

Si l'utilisateur publie le formulaire, je mets à jour le xml et le convertir en une piqûre pour le publier sur le serveur. Je sais que je pourrais juste poster les champs, mais j'ai quelques bonnes raisons de le mettre dans un document XML. Tout fonctionne très bien, mais pas si l'utilisateur fait des entrées avec des caractères spéciaux. Voilà comment je définir la valeur du nœud (dans cet exemple, le « nœud descriptioon »)

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

Ainsi, le nœud utilisé pour être CDATA, mais la fonction .text() qui supprime. J'Alo essayé ceci:

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

Cela ne fonctionne pas non plus parce que .text() change < à & gt;

est-ce que quelqu'un a une solution? Mon inspiration est parti .....

Merci, Simon

Répondre

0

texte Il suffit de définir, sans ajouter <![CDATA[. CDATA est juste l'un des moyens d'échapper du texte en XML, mais puisque jQuery vous échappe, vous n'avez pas besoin d'utiliser une autre méthode. &lt; est tout aussi bon que <![CDATA[<]]>. Pour les applications XML, ils sont identiques.

+0

Merci porneL, Je vais essayer de le comprendre de cette façon. – simon

+0

Merci à vous je l'ai compris! encore, c'est un peu étrange, vous ne pouvez pas utiliser la fonctionnalité cdata .... – simon

+0

Cela ne vous aide pas totalement si vous voulez, par exemple, que quelqu'un puisse insérer du code HTML dans votre fichier XML. Tels que ici.]]> – Spider

3

Solution simple. Créez un nœud de section CData et ajoutez-le à votre XML. J'ai lutté avec le JQuery .text() sans chance. Cela a fonctionné fantastique.

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