2010-09-15 45 views
4

我有以下xml文件,我試圖使用linq to xml來獲取駐留在CDATA部分內的元素。任何建議請。從CDATA使用LINQ到XML提取數據

<?xml version = "1.0" encoding = "UTF-8"?> 
<result final = "true" transaction-id="84WO" xmlns="http://cp.com/rules/client"> 
<client id = "CustName'> 
<quoteback> 
</client> 
<report format = "CP XML"> 
<![CDATA[<?xml version="1.0" encoding = "UTF-8" standalone = "yes"?> 
<personal_auto xmlns = "http://cp.com/rules/client"> 
    <admin> 
    </admin> 
    <report> 
    </report> 
</personal_auto> 
]]> 
</report> </result> 
+0

請編輯您的問題(這次使用預覽),因爲我沒有在您的XML示例中看到任何內容。 – 2010-09-15 17:21:34

+0

您的XML無效。 '<?xml'行必須是第一行。 – 2010-09-15 17:54:53

+0

約翰,這是一個錯字。 – BumbleBee 2010-09-15 17:56:58

回答

4
XElement XTemp = XElement.Load(YourXMLfile); 
var queryCDATAXML = from element in XTemp.DescendantNodes() 
         where element.NodeType == System.Xml.XmlNodeType.CDATA 
         select element.Parent.Value.Trim();
1

這是標準的LINQ功能 - 見http://msdn.microsoft.com/en-us/library/system.xml.linq.xcdata.aspx

你能否更詳細地解釋這個問題,如果這沒有解決呢?

+0

我的要求是獲取CDATA部分中的所有元素,我怎樣才能使用LINQ到XML – BumbleBee 2010-09-15 18:06:39

+1

啊,你想讓別人爲你做你的工作。實際上不回答一個問題。對。以後一個快速Google:http://www.jarvis.com.au/post/2008/09/I-love-Linq-to-XML.aspx – Rushyo 2010-09-15 18:14:25

+0

Rushyo。抱歉。我的XML文件在CDATA部分有一個XML文件。我試圖在這裏實現的任務是我需要能夠導航CDATA部分內的xml文件並提取必要的元素。有什麼建議嗎? – BumbleBee 2010-09-15 19:01:17

0

我一直在尋找做一些稍微不同的 - 我使用CDATA在名爲「SQL」

自己專用的元素只是爲了澄清CDATA內容將被透明地讀取嵌入SQL XML格式。

如果你

var cdataContent = sql.Value; 

你得到任何字符串是在

<![CDATA[..]]> 

標籤,而不必實例化一個不同的節點類型在它的上面或做任何花哨的

所以在上述情況下,cdataContent只是「..」。

Linq to sql真的很不錯!我總是期望有更多的關於參與的混亂。對那些製作這個API的人很有幫助。