2010-07-19 3 views
5

I будет проходить файл XML так:Как прочитать файл XML с помощью System.IO.Stream с LINQ

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; 
    } 

ошибка:

Error 1 The best overloaded method match for 'System.Xml.Linq.XDocument.Load(string)' has some invalid arguments

cannot convert from 'System.IO.Stream' to 'string'

ответ

12

Вы используете .NET 3.5 с помощью любого шанс? XDocument.Load(Stream), по-видимому, только прибыл в .NET 4.

Возможно, вы захотите использовать the overload which takes an XmlReader (что поддерживается в 3.5).

EDIT: Пример кода:

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

Да, я использую 3.5 рамки. какова должна быть альтернатива этому? –

+0

Не могли бы вы показать мне несколько строк строк с помощью xmlReader? –

+0

@teki: Отредактировано, чтобы дать метод, который вы могли бы использовать. –

3

Метод XDocument.Load(Stream) является новым в .NET 4. Для более ранних версий базы, вам нужно сначала прочитать поток и передать его в виде строки:

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

    var document = XDocument.Parse(streamContents); 
} 
+0

Я получаю ошибку при попытке загрузить streamContents и ошибка: «Недопустимые символы в пути». Мой xml очень прост, а не специальные символы. –

+1

XDocument.Load принимает имя файла, а не сам XML. Вы * можете * использовать XDocument.Parse вместо этого, но код в этом ответе в настоящее время предполагает UTF-8 ... было бы более надежно использовать XmlReader.Create IMO. –

+0

Yup, фиксированный. благодаря – LorenzCK

Смежные вопросы