Как мне разобрать этот простой XML в C #? - PullRequest
1 голос
/ 13 апреля 2010

Я хочу разобрать ответ SOAP xml в C # (но я не могу использовать стандартный интерфейс SOAP, потому что wsld неверен).

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

Общий вид XML:

<return>
  <item>
   <attr1>1</attr1>
   <attr2>X</attr2>
  </item>
  <item>
   <attr1>2</attr1>
   <attr2>Y</attr2>
  </item>
...
</return>

Привет

Ответы [ 4 ]

2 голосов
/ 13 апреля 2010

Вы можете использовать некоторый синтаксис linq, чтобы добраться до вашего xml. Начните с нового, используя

using System.Xml.Linq;

тогда вы можете написать запрос linq, чтобы открыть ваш XML-файл. (в моем примере это веб-приложение, но вы можете это изменить) Просто получите потомков элемента, который группирует элементы, которые вы хотите проанализировать. Тогда сделайте что-нибудь с результатом. В моем случае я заполняю новый объект точными значениями, которые я хочу.

XDocument changesetXML = XDocument.Load(Server.MapPath(@"~\changesets.xml"));

return from changeset in changesetXML.Descendants("Changeset")
       select new NewsTopic
       {
           DateAdded = changeset.Element("Date").Value,
           Content = changeset.Element("Summary").Value
       };
1 голос
/ 13 апреля 2010

Используя LINQ to XML, это так же просто, как сделать следующее:

XDocument document = XDocument.Load(fileName); // or .Parse(string) + other methods

var query = from item in document.Descendants("item")
            select new 
            {
               Attr1 = (int)item.Element("attr1"),
               Attr2 = (string)item.Element("attr2")
            };
0 голосов
/ 13 апреля 2010
XmlDocument doc = new XmlDocument();
doc.Load(“myxml.xml");

foreach(XmlNode xn in doc) 
  {
  foreach(XmlElement element in xn)
    {
  //do something

    }
}
0 голосов
/ 13 апреля 2010

Вы можете проанализировать xml с помощью класса XmlDocument или класса XElement

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