2015-11-17 1 views
0

У меня есть документ XML, который выглядит следующим образом:Как читать из XML, который имеет те же имена узлов в C#

<?xml version="1.0" encoding="UTF-8"?> 
<teryt> 
<catalog name="TERC" type="all" date="2015-01-01"> 
<row> 
<col name="WOJ">02</col> 
<col name="POW"/> 
<col name="GMI"/> 
<col name="RODZ"/> 
<col name="NAZWA">DOLNOŚLĄSKIE</col> 
<col name="NAZDOD">województwo</col> 
<col name="STAN_NA">2015-01-01</col> 
</row> 
... 
</row> 
</catalog> 
</teryt> 

У меня есть код, который работает, но читает только первый седловины каждого ряд:

System.Xml.XmlDocument rssDocument = new System.Xml.XmlDocument(); 
      rssDocument.Load("TERC.xml"); 

      System.Xml.XmlNodeList rssItems = rssDocument.SelectNodes("teryt/catalog/row"); 

      for (int i = 0; i < rssItems.Count; i++) 
      { 
       System.Xml.XmlNode rssNode; 

       rssNode = rssItems.Item(i).SelectSingleNode("col"); 

       if (rssNode != null) 
       { 
        Console.WriteLine(rssNode.InnerText); 
       } 
       else 
       { 
        Console.WriteLine(""); 
       } 
      } 

Что я должен делать, если я хочу, чтобы прочитать InnerText от каждого седловины во всех строках?

ответ

1

Изменить

rssNode = rssItems.Item(i).SelectSingleNode("col"); 

К

XmlNodeList list = rssItems.Item(i).SelectNodes("col"); 

foreach(XmlNode node in list) 
{ 
    Console.WriteLine(node .InnerText); 
} 

имя метода объяснить, что делает: SelectSingleNode. Выбирает один узел с этим именем. Вам нужно выбрать все узлы, используя метод SelectNodes

+0

Так вот как это работает. Большое спасибо за ответ. У меня еще один вопрос. Могу ли я выбрать, какой «name =» я хочу прочитать? – Marox

1
foreach (var row in rssDocument.SelectNodes("teryt/catalog/row")) 
{  
    foreach (var col in row.SelectNodes("col")) 
    {    
     Console.WriteLine(col.InnerText);  
    } 
} 

Я не тестировал это. Это даст вам представление о решении. Вы выбираете только один столбец из каждой строки, потому что SelectNodes («col») не дает вам узлов внутри «col». Он дает вам узлы с именем «col».

Смежные вопросы