如何使用带有LINQ的System.IO.Stream读取XML文件

我将像这样传递xml文件:

File1.PostedFile.InputStream //reading xml file..... public static void readXMLOutput(Stream stream) { System.Xml.Linq.XDocument xml = System.Xml.Linq.XDocument.Load(stream); var query = from p in xml.Element("ste").Element("Application") //where (int)p.Element("Id") == 1 select Page; foreach (var record in query) { Response.Write("dfe") + record.Element("dfe").Value; } 

错误:

错误1’System.Xml.Linq.XDocument.Load(string)’的最佳重载方法匹配有一些无效的参数

无法从’System.IO.Stream’转换为’string’

您是否有机会使用.NET 3.5? XDocument.Load(Stream)显然只是在.NET 4中运行。

您可能希望使用带有XmlReader的重载 (在3.5中受支持)。

编辑:示例代码:

 static XDocument LoadFromStream(Stream stream) { using (XmlReader reader = XmlReader.Create(stream)) { return XDocument.Load(reader); } } 

XDocument.Load(Stream)方法是.NET 4中的新增function。对于框架的早期版本,您需要首先读取流并将其作为字符串传递:

 public static void readXMLOutput(Stream stream){ string streamContents; using(var sr = new StreamReader(stream)){ streamContents = sr.ReadToEnd(); } var document = XDocument.Parse(streamContents); }