Разобрать XML с повторным шаблоном узлов - PullRequest
2 голосов
/ 14 апреля 2011

Не могли бы вы дать мне несколько советов о том, как лучше всего проанализировать XML-документ в C #?

<RESPONSE>
  <FNAME>user1</FNAME>
  <LNAME>lastname1</LNAME>
  <ADDRESS>
     <LINE1>line 1 for user 1</LINE1>
     <LINE2>line 2 for user 1</LINE2>
     .....
     .....
  </ADDRESS>
  <FNAME>user2</FNAME>
  <LNAME>lastname2</LNAME>
  <ADDRESS>
     <LINE1>line 1 for user 2</LINE1>
     <LINE2>line 2 for user 2</LINE2>
     .....
     .....
  </ADDRESS>

</RESPONSE>

Это данные, возвращаемые онлайн-службой XML, и они, очевидно, не очень хорошо сформированы, так какВложение не применяется должным образом для каждого из различных элементов.Есть ли способ избежать построчного разбора и сравнения текста?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Linq to Xml - современный способ синтаксического анализа XML с использованием .NET

. Следующий фрагмент предоставит вам доступ ко всем элементам FNAME

var doc = XDocument.Parse(xml);
foreach (var fname in doc.Root.Elements("FNAME") {
  // fname.Value has the element value
}
2 голосов
/ 14 апреля 2011

Вот, пожалуйста:

XmlTextReader xml = new XmlTextReader("response.xml");
while (xml.Read())
{
    switch (xml.NodeType)
    {
        case XmlNodeType.Element:
            {
                if (xml.Name == "RESPONSE") Console.WriteLine("Response: ");
                if (xml.Name == "FNAME")
                {
                    Console.Write("First Name: ");
                }
                if (xml.Name == "LNAME")
                {
                    Console.Write("Last Name: ");
                }
                if (xml.Name == "ADDRESS") Console.WriteLine("Address: ");
                if (xml.Name == "LINE1")
                {
                    Console.Write("Line 1: ");
                }
                if (xml.Name == "LINE2")
                {
                    Console.Write("Line 2: ");
                }
            }
            break;
        case XmlNodeType.Text:
            {
                Console.WriteLine(xml.Value);
            }
            break;
        default: break;
    }
}
Console.ReadKey();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...