如何使用带有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); }