2013-08-04 74 views
5

CDATA標籤我有一個XmlNode代表例如下面的XML:去除XmlNode的

XmlNode xml.innerText = 
<book> 
<name><![CDATA[Harry Potter]]</name> 
<author><![CDATA[J.K. Rolling]]</author> 
</book> 

我想改變這個節點,以便它會包含以下內容:

XmlNode xml.innerText = 
<book> 
<name>Harry Potter</name> 
<author>J.K. Rolling</author> 
</book> 

任何想法?
謝謝!

+0

是他們移除標籤的任何具體需求,或者你只是想讀值?順便總是發佈正確的樣本。您在示例xml中缺少關閉cdata標籤。 – Ehsan

+0

還有,它被傳遞給正在創建xml的客戶端 – Niv

+0

? – Ehsan

回答

8

沒有CDATA讀取數值很好,如果它是你到底是如何把它,那麼它很簡單:

xml.innerText = xml.innerText.Replace("![CDATA[","").Replace("]]",""); 
xmlDoc.Save();// xmlDoc is your xml document 
+0

不幸的是,這並不完全如此。它的嵌套更復雜,而且這個代碼(我試過)似乎也刪除了其他主要部分 – Niv

+0

@Niv你能分享更多的代碼還是給我們更多的信息?它是你想要我想的字符串操作,但我不知道你需要什麼確切的操作。如果你有更多的信息,我可以提供幫助 –

+2

結束工作,只需稍作修改:而不是innerText,我需要使用innerXML。 TNX! – Niv

1

我建議你閱讀你的整個XML並重寫它。你可以這樣

foreach (var child in doc.Root.Elements()) 
    { 
     string name = child.Name; 
     string value = child.Value 
    } 
+1

XML可能由第三方提供,需要清理。 –

+0

刪除CDATA的一個原因是libxml不處理CDATA。這需要他從第三方接收數據,並將其製作成可以工作或刪除的格式。參見[gnome和CDATA](https://mail.gnome.org/archives/xml/2008-September/msg00092.html)。另外,[Gnome和CDATA也是](http://www.xmlsoft.org/search.php?query=cdata&submit=Search)。 – Michele