我有以下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>
答案 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的人致敬。