簡體   English   中英

如何從C#中具有相同節點名稱的XML讀取

[英]How to read from XML that has same node names in C#

我有一個看起來像這樣的XML文檔:

<?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>

我有一個有效的代碼,但僅讀取每的第一個col

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 ,該怎么辦?

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

我沒有測試。 這是給您解決方案的想法。 您僅從每一行中選擇一個col,因為SelectNodes(“ col”)不會為您提供“ col”內的節點。 它為您提供了名為“ col”的節點。

更改

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

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

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

方法的名稱說明了正在執行的操作: SelectSingleNode 選擇具有此名稱的單個節點。 您需要使用SelectNodes方法選擇所有節點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM