Как использовать класс XmlReader?

Я хочу сохранить и загрузить данные xml с помощью XmlReader. Но я не знаю, как использовать этот класс. Можете ли вы дать мне пример кода для запуска?

Ответы

Ответ 1

Лично я переключился с XMLReader на System.XML.Linq.XDocument для управления файлами данных XML. Таким образом, я могу легко извлекать данные из xml в объекты и управлять ими, как и любой другой объект в моей программе. Когда я закончил манипулировать ими, я могу просто сохранить изменения обратно в xml файл в любое время.

        //Load my xml document
        XDocument myData = XDocument.Load(PhysicalApplicationPath + "/Data.xml");

        //Create my new object
        HelpItem newitem = new HelpItem();
        newitem.Answer = answer;
        newitem.Question = question;
        newitem.Category = category;

        //Find the Parent Node and then add the new item to it.
        XElement helpItems = myData.Descendants("HelpItems").First();
        helpItems.Add(newitem.XmlHelpItem());

        //then save it back out to the file system
        myData.Save(PhysicalApplicationPath + "/Data.xml");

Если я хочу использовать эти данные в легко управляемом наборе данных, я могу привязать его к списку моих объектов.

        List<HelpItem> helpitems = (from helpitem in myData.Descendants("HelpItem")
                  select new HelpItem
                  {
                       Category = helpitem.Element("Category").Value,
                       Question = helpitem.Element("Question").Value,
                       Answer = helpitem.Element("Answer").Value,
                  }).ToList<HelpItem>();

Теперь его можно обойти и обработать с помощью любых встроенных функций моего класса объектов.

Для удобства мой класс имеет функцию для создания себя как xml node.

public XElement XmlHelpItem()
    {
        XElement helpitem = new XElement("HelpItem");
        XElement category = new XElement("Category", Category);
        XElement question = new XElement("Question", Question);
        XElement answer = new XElement("Answer", Answer);
        helpitem.Add(category);
        helpitem.Add(question);
        helpitem.Add(answer);
        return helpitem;
    }

Ответ 2

MSDN имеет простой пример, чтобы вы начали здесь.

Если вам интересно читать и писать документы XML, а не просто использовать класс XmlReader, хорошая статья, охватывающая несколько ваших вариантов здесь.

Но если вы просто хотите начать и поиграть, попробуйте следующее:

 XmlReaderSettings settings = new XmlReaderSettings();
 settings.IgnoreWhitespace = true;
 settings.IgnoreComments = true;
 XmlReader reader = XmlReader.Create("file.xml", settings);

Ответ 3

Вы должны использовать метод Create вместо new, так как XmlReader является abstract class, используя шаблон Factory.

var xmlReader = XmlReader.Create("xmlfile.xml");