C#的XDocument需要被解析到XML再次

问题描述:

我已经被填充为的XDocument如下:C#的XDocument需要被解析到XML再次

XDocument xDoc = XDocument.Parse(new StreamReader(response.GetResponseStream()).ReadToEnd()); 

这让我看起来如下一个XDocument:

<GetReportAsXMLString> 
    <report> 
     <reportItem Count ="562.................. 
</GetReportAsXMLStringResult> 

标签之间的任何都只是一个巨大的字符串(黑色)。我如何将这部分文档格式化为XML?标签也是字符串的一部分。我只是不知道如何让它显示为不是XML。

感谢

+0

以及*是*有效的XML? – BrokenGlass 2011-03-15 13:45:08

+0

我们需要更多关于元素下的内容的信息... – MattDavey 2011-03-15 13:50:08

+0

是的...在之间是所有XML,它只是格式化为一个字符串。我想要做的是说IEnumerable elements = xDoc.Element(“ReportItem”);获取Report Item下的元素,但它不会将其识别为XML – user380432 2011-03-15 13:59:02

很难从你的描述说,但它看起来像你需要先解析响应流(有效的XML),其中包含另一个XML文档(字符串)。你需要从“外”的XML文档提取字符串并解析成一个新问题:

伪代码:

XDocument outer = response.GetResponseStream(); 
String innerXml = outer.Element("report").Value; 
XDocument inner = XDocument.Parse(innerXml); 

你有这样的XML内容:

<GetReportAsXMLString> 
    <report> 
    <reportItem Count =\"562\"/> 
    <reportItem Count =\"562\"/> 
    </report> 
</GetReportAsXMLString> 

和你想只提取“reportItem”节点?

如果是这样,你可以这样做:

string xml = "<GetReportAsXMLString><report><reportItem Count =\"562\"/><reportItem Count =\"562\"/></report></GetReportAsXMLString>"; 
XDocument xDoc = XDocument.Parse(xml); 
IEnumerable<XElement> elList = xDoc.Descendants().Where(x => x.Name.LocalName.Equals("report")).Descendants().Where(x => x.Name.LocalName.Equals("reportItem"));