2014-01-10 22 views
0

我想創建和下面的文件一樣的xml文件。 我處理child節點作爲字符串的值,並使用該功能xmlNewText(BAD_CAST string)其中字符串是我想在子節點如何在不使用docptr的情況下將CDATA作爲值添加到特定節點

<?xml version="1.0" encoding="UTF-8"?> 
    <Root> 
     <child>![CDATA[<data>hello</data>]]</child> 
    </Root> 

放置增值它但這被轉換爲

<?xml version="1.0" encoding="UTF-8"?> 
    <Root> 
     <child>![CDATA[&lt;data&gt;hello&lt;/data&gt;]]</child> 
    </Root> 

任何人都可以指導我這樣做嗎?我看到了一些問題,答案是基於使用docptr創建cdatasection。我需要在不使用docptr的情況下創建cdatasection。我只和我一起擁有rootptr。是否有可能這樣做?我使用c作爲編程語言,而我正在使用的庫是libxml

+1

您應該添加一個標籤爲您所使用的編程語言。現在我甚至無法猜測。 – TheConstructor

+1

編輯了這個問題 –

回答

0

實際上,您無法通過將文本插入到DOM中來構建XML內容。這個例子顯示了一些原因 - 不僅DOM正確地轉義了文本節點的內容,而且你還得到了錯誤的語法。

而是使用節點工廠創建一個CDATASection節點,其中包含要包含在文檔中的文本。

或者 - 因爲在這裏沒有充分的理由使用CDATA部分 - 創建一個Text節點而不嘗試手動包裝其內容,並讓DOM序列化程序適當地轉義它。您可能會逐個字符地轉義,這在XML文件中看起來並不漂亮......但這對於任何正確編寫的處理XML的應用程序而言意味着完全相同。

(誠然,有一些應用,這怎麼辦普通文字和CDATA部分之間的差異照顧。這些應用程序的技術術語是「破」。)

相關問題