如何将XmlCDataSection转换为XDocument

时间:2013-12-30 15:22:30

标签: c# linq-to-xml

有谁知道如何在C#中将XmlCDataSection强制转换为XDocument?

这是我到目前为止所做的,但它不起作用:

XmlCDataSection xcData = xcDataInput as XmlCDataSection;

XDocument xdoc = xcData.Cast<XmlNode>().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?)

2 个答案:

答案 0 :(得分:2)

目前尚不清楚为什么要使用CastSelect。我怀疑你只是想要:

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

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

答案 1 :(得分:0)

假设你可以执行演员表演,你必须告诉你哪个元素。选择方法返回一个列表。你可能想要第一个项目..

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