Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将XMLCDATA节强制转换为XDocument_C#_Linq To Xml - Fatal编程技术网

C# 如何将XMLCDATA节强制转换为XDocument

C# 如何将XMLCDATA节强制转换为XDocument,c#,linq-to-xml,C#,Linq To Xml,有人知道如何将XMLCDATA节转换为C#中的XDocument吗 到目前为止,我已经做到了这一点,但它不起作用: XmlCDataSection xcData = xcDataInput as XmlCDataSection; XDocument xdoc = xcData.Cast<XmlNode>().Select(node => XDocument.Parse(node.OuterXml).Root); xmlcatasection xcData=xcDataInp

有人知道如何将XMLCDATA节转换为C#中的XDocument吗

到目前为止,我已经做到了这一点,但它不起作用:

XmlCDataSection xcData = xcDataInput as XmlCDataSection;

XDocument xdoc = xcData.Cast<XmlNode>().Select(node => XDocument.Parse(node.OuterXml).Root);
xmlcatasection xcData=xcDataInput作为xmlcatasection;
XDocument xdoc=xcData.Cast().Select(node=>XDocument.Parse(node.OuterXml.Root));
这就是错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' to 'System.Xml.Linq.XDocument'. An explicit conversion exists (are you missing a cast?)
无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Xml.Linq.XDocument”。存在显式转换(是否缺少强制转换?)

不清楚为什么要使用
Cast
Select
。我猜你只是想:

XDocument xdoc = XDocument.Parse(xcData.InnerText);

请注意,我使用的是
InnerText
而不是
OuterXml
,因为CDATA节点的外部XML本身永远不会是有效的XML文档。如果这不是您要查找的内容,请显示包含CDATA节的文档的完整示例,以及您想要从中获取的文档。

假设您可以执行强制转换,您必须告诉哪些元素。选择方法返回一个列表。你可能想要第一件东西,所以

XDocument xdoc = xcData.Cast<XmlNode>().First(node =>XDocument.Parse(node.OuterXml).Root);
XDocument xdoc=xcData.Cast().First(node=>XDocument.Parse(node.OuterXml.Root));

不能将类强制转换为不相关的类型。将CDATA节的
OuterXml
提供给
XDocument
Parse
方法将无法作为完整文档使用,因为不能包含单个CDATA节<如果CDATA包含XML文档的标记,则code>XDocument.Parse(xcData.InnerText)是有意义的。