Как считать XML-файл с помощью Системы. IO.Stream с LINQ

Я буду передавать 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 лучшее соответствие перегруженного метода для 'Системы. Xml. Linq. XDocument. Загрузка (строка)' имеет некоторые недействительные аргументы

не может преобразовать из 'Системы. IO.Stream' для 'представления в виде строки'

5
задан paqogomez 9 July 2014 в 17:31
поделиться

2 ответа

Вы случайно не используете .NET 3.5? XDocument.Load(Stream), очевидно, появился только в .NET 4.

Возможно, вы захотите использовать перегрузку, которая принимает XmlReader (который поддерживается в 3.5).

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

static XDocument LoadFromStream(Stream stream)
{
    using (XmlReader reader = XmlReader.Create(stream))
    {
        return XDocument.Load(reader);    
    }
}
14
ответ дан 18 December 2019 в 09:47
поделиться

Метод 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);
}
3
ответ дан 18 December 2019 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: