使用LINQ to XML从CDATA中提取数据

时间:2010-09-15 17:17:57

标签: linq-to-xml cdata

我有以下xml文件,我正在尝试使用linq to xml来获取位于CDATA部分内的Elements。请提出任何建议。

<?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>

3 个答案:

答案 0 :(得分: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 :(得分:1)

这是标准的LINQ功能 - 请参阅http://msdn.microsoft.com/en-us/library/system.xml.linq.xcdata.aspx

如果不能解决问题,请你详细解释一下这个问题吗?

答案 2 :(得分:0)

我希望做一些稍微不同的事情 - 我在xml中使用cdata在自己的专用元素中嵌入sql,命名为'sql'

只是为了澄清cdata内容将被透明地阅读。

如果你这样做

var cdataContent = sql.Value;

你得到

中的任何字符串
 <![CDATA[..]]>

标记,无需在其上实例化不同的节点类型或做任何花哨的事情

所以在上面的例子中,cdataContent只是“..”。

Linq to sql真的很棒!我总是希望有更多的参与。向制造该API的人致敬。