Читать сложный XML - PullRequest
       21

Читать сложный XML

1 голос
/ 28 декабря 2011

Мне трудно читать из этого xml!Я думаю, что XMLDocument помогло бы, но я не знаю, как получить значение от каждого элемента в childNode!

Особенно, дочерний узел, который имеет любой дочерний узел внутри, такой как IdList.

Формат XML:

 <sdnEntry>

<programList>
  <program>SDNT</program>
</programList>

<idList>
  <id>
    <uid>6028</uid>
    <idType>NIT #</idType>
    <idNumber>900106267-0</idNumber>
    <idCountry>Colombia</idCountry>
  </id>
  <id>
    <uid>6029</uid>
    <idType>N0T #</idType>
    <idNumber>900106267-1</idNumber>
    <idCountry>Colombian</idCountry>      
  </id>
</idList>
</sdnEntry>

Код:

XmlDocument doc = new XmlDocument();
doc.Load(@"D:\SDN1.xml");

XmlElement root = doc.DocumentElement;                

XmlNodeList sdnEntryNodeList = root.GetElementsByTagName("sdnEntry"); 

foreach (XmlNode sdnNode in sdnEntryNodeList)
{
    for (int row = 0; row < sdnEntryNodeList.Count; row++)
    {
        XmlNodeList programListNodeList = sdnNode["programList"].GetElementsByTagName("program");

        foreach (XmlNode programNode in programListNodeList)
        {
            program = programNode.InnerText;
        }

        XmlNodeList idListNodeList = element["idList"].GetElementsByTagName("id");

        foreach (....)
        {

        }
     }       

}

Приведенный выше код, это хорошо?в противном случае, я приму все ваши советы, пожалуйста, прокомментируйте ....

Как читать programList и idList в этом сложном XML?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2011

Если вы хотите использовать XMLDocument, вот пример для вас

var programList = doc.SelectNodes("/sdnEntry/programList/program");
var idList = doc.SelectNodes("/sdnEntry/idList/id");
0 голосов
/ 08 мая 2012

Я бы упростил ваш код с помощью следующих запросов linq-to-xml.

var programs = from program in 
               doc.Root.Element("programList").Descendants("program")
               select program.Value;

var ids = from id in doc.Root.Element("idList").Descendants("id")
          select new
          {
               uid = (string)id.Element("uid"),
               idType = (string)id.Element("idType"),
               idNumber = (string)id.Element("idNumber"),
               idCountry = (string)id.Element("idCountry")
          };
0 голосов
/ 28 декабря 2011

Использование linq to xml.

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

Образец:

foreach(var node in doc.Elements("idList").Elements("id").Elements("uid")) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...