从CDATA使用LINQ到XML提取数据

问题描述:

我有以下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无效。 ' 2010-09-15 17:54:53

+0

约翰,这是一个错字。 – BumbleBee 2010-09-15 17:56:58

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

这是标准的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

我一直在寻找做一些稍微不同的 - 我使用CDATA在名为“SQL”

自己专用的元素只是为了澄清CDATA内容将被透明地读取嵌入SQL XML格式。

如果你

var cdataContent = sql.Value; 

你得到任何字符串是在

<![CDATA[..]]> 

标签,而不必实例化一个不同的节点类型在它的上面或做任何花哨的

所以在上述情况下,cdataContent只是“..”。

Linq to sql真的很不错!我总是期望有更多的关于参与的混乱。对那些制作这个API的人很有帮助。