2010-07-19 13 views
5

będę przepuszczenie pliku xml jak poniżej:Jak odczytać plik XML przy użyciu System.IO.Stream z 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; 
    } 

błąd:

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'

Odpowiedz

12

Czy używasz .NET 3.5 przez dowolny szansa? XDocument.Load(Stream) widocznie pojawił się tylko w .NET 4.

Być może zechcesz użyć the overload which takes an XmlReader (co jest obsługiwane w wersji 3.5).

EDIT: Przykładowy kod:

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

Tak, używam ramy 3.5. jaka powinna być alternatywa dla niego? –

+0

czy możesz pokazać mi kilka przykładowych linii Stream używając xmlReader? –

+0

@teki: Edytowano, aby podać metodę, której można użyć. –

3

Sposób XDocument.Load(Stream) nowego w .NET 4. We wcześniejszych wersjach ram, trzeba czytać strumień pierwszy i przekazać go w postaci ciągu:

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

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

Mam gettign błąd, gdy próbuje załadować streamContents i błąd jest: "Nielegalne znaki na ścieżce.", Mój xml jest prawie bardzo prosty, a nie znaków specjalnych nic. –

+1

XDocument.Load pobiera nazwę pliku, a nie samego pliku XML. Zamiast * możesz * użyć XDocument.Parse - ale kod w tej odpowiedzi zakłada obecnie kodowanie UTF-8 ... byłoby bardziej odporne na użycie XmlReader.Create IMO. –

+0

Tak, naprawione. Dzięki – LorenzCK

Powiązane problemy