2010-11-22 139 views
2

我有一個問題,使用jquery設置cdata節點。使用.text()函數可以輕鬆獲得cdata,但是如果我使用.text('jquery> handy'),它不會創建一個cdata節點。jquery set xml cdata

這是我procecure: 我得到XML格式的數據的形式加載 是這樣的:

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

我使用CDATA節點,因爲一個字段可以包含各種特殊字符的。 然後我通過使用.text()獲取節點內容來加載表單中的數據。如果用戶發佈表單,我更新xml並將其轉換爲sting以將其發佈到服務器。我知道我可以發佈字段,但我有一些很好的理由把它放在一個XML文檔。一切工作得很好,但如果用戶使用特殊字符進行一些輸入則不會。 這是我的設定節點的值(在這個例子中「descriptioon節點」)

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

所以曾經是CDATA節點,但的.text()函數將刪除。我ALO試過這樣:

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

這也不起作用,因爲的.text()改變<到& GT;

有沒有人有解決方案?我的靈感走了.....

感謝, 西蒙

回答

0

只需設置文本,無需添加<![CDATA[。 CDATA只是在XML中轉義文本的方法之一,但由於jQuery爲您逃脫,您不需要使用其他方法。 &lt;<![CDATA[<]]>一樣好。對於XML應用程序,它們是相同的

+0

謝謝porneL, 我會盡力弄明白這一點。 – simon 2010-11-22 15:37:34

3

簡單的解決方案。創建一個CData節點並將其附加到您的XML。我努力用JQuery .text()沒有運氣。這工作太棒了。

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