[英]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.