Прочитать XML-файл в XmlDocument

103

Я новичок в C #. У меня есть файл XML (text.xml). Я хочу прочитать это XmlDocumentи сохранить поток в строковой переменной.

AJP
источник
1
спасибо вам обоим за вашу помощь.
AJP

Ответы:

169

Используйте XmlDocument.Load()метод для загрузки XML из вашего файла. Затем используйте XmlDocument.InnerXmlсвойство, чтобы получить строку XML.

XmlDocument doc = new XmlDocument();
doc.Load("path to your file");
string xmlcontents = doc.InnerXml;
Тимур Садыков
источник
2
XmlDocumentне содержит определения для Load.
Мэтт Кларк
Я проголосовал против всех из них, потому что ни один из них не работал. Как оказалось, я разрабатываю для WindowsRT, а в Compact .NET Framework многие из этих функций исключены. В том числе многие из них, которые мне нужны ... Например, XmlDocument.Load()и и конструктор StreamReaderStreamReader(filePath)
Мэтт Кларк
11
@MattClark: Я чувствую вашу боль - я уже два года борюсь с капризами и ограничениями CF, но это не повод для отрицательного голоса. OP не указал CF, и поэтому нет причин, по которым ответчики будут учитывать CF.
Б. Клей Шеннон
18

Если ваша версия .NET новее 3.0, вы можете попробовать использовать System.Xml.Linq.XDocumentвместо XmlDocument. С помощью данных проще обрабатывать данные XDocument.

Щенок
источник
3
А вот как загрузить файл с помощью XDocument: stackoverflow.com/questions/670563/linq-to-read-xml
Брайан Лиминг
6

Надеюсь, вы не против Xml.Linq и .net3.5 +

XElement ele = XElement.Load("text.xml");
String aXmlString = ele.toString(SaveOptions.DisableFormatting);

В зависимости от того, что вас интересует, вы, вероятно, можете пропустить всю часть var 'string' и просто использовать объекты XLinq

Абдул Хфуда
источник
6
XmlDocument doc = new XmlDocument();
   doc.Load("MonFichierXML.xml");

    XmlNode node = doc.SelectSingleNode("Magasin");

    XmlNodeList prop = node.SelectNodes("Items");

    foreach (XmlNode item in prop)
    {
        items Temp = new items();
        Temp.AssignInfo(item);
        lstitems.Add(Temp);
    }
user3626085
источник
1
var doc = new XmlDocument(); 
doc.Loadxml(@"c:\abc.xml");
Джулиано Сейлз
источник
Обратите внимание, что вопрос также требует сохранения содержимого XML в строке.
минут
XmlDocument.LoadXml()загружает строку XML. Чтобы загрузить файл XML по имени, используйте, XmlDocument.Load()как предлагает принятый ответ.
François Beaune