Разбор XML в C # - PullRequest
       23

Разбор XML в C #

0 голосов
/ 29 октября 2010

Здравствуйте, я хочу знать, как я могу разобрать этот простой XML-файл в C #.У меня может быть несколько элементов «in», из которых я хочу использовать значения даты, минимума, максимума и состояния потомка.

Ответы [ 5 ]

3 голосов
/ 29 октября 2010

Linq to xml также полезен при разборе xml -

http://msdn.microsoft.com/en-us/library/bb387098.aspx

Также - http://msdn.microsoft.com/library/bb308960.aspx

2 голосов
/ 29 октября 2010

Вам нужно System.XML , начиная с XmlDocument.Load (имя файла) .

Как только вы загрузите XmlDocument, вы можете углубиться в него по мере необходимости, используя встроенную объектную модель XML .Net, начиная с уровня XmlDocument .Вы можете рекурсивно обходить дерево довольно интуитивно, захватывая то, что вы хотите, от каждого XmlNode по мере продвижения.

В качестве альтернативы (и предпочтительно) вы можете быстро найти все XmlNode sваш XmlDocument, который соответствует определенным условиям, используя XPath - примеры здесь .Пример использования в C #: XmlNode.SelectNodes .

using System;
using System.IO;
using System.Xml;

public class Sample {

  public static void Main() {

    XmlDocument doc = new XmlDocument();
    doc.Load("booksort.xml");

    XmlNodeList nodeList;
    XmlNode root = doc.DocumentElement;

    nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']");

    //Change the price on the books.
    foreach (XmlNode book in nodeList)
    {
      book.LastChild.InnerText="15.95";
    }

    Console.WriteLine("Display the modified XML document....");
    doc.Save(Console.Out);

  }
}
2 голосов
/ 29 октября 2010

Пространство имен System.XML содержит все виды инструментов для анализа, чтения и записи данных XML. Кстати, ваш XML не правильно сформирован; у вас есть два <out> элемента, но только один </out> элемент.

1 голос
/ 29 октября 2010

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

Я ненавижу парсинг XML.Серьезно, я почти отказываюсь делать это, тем более что .NET может сделать это за меня.Что я хотел бы сделать, это создать объект «In», который имеет свойства выше.Возможно, у вас уже есть один, или создание займет 60 секунд.Вам также понадобится список объектов In, который называется «Out».

Затем просто десериализуйте XML в объекты.Это займет всего несколько строк кода.Вот пример.Кстати, это делает изменение и повторное сохранение данных столь же простым.

Как сериализовать / десериализовать

0 голосов
/ 29 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...