我有一个类似的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("");
}
}
如果我想从所有行中的每个 col 中读取InnerText
,我该怎么办?
答案 0 :(得分:1)
1 <<
我没有测试过这个。这是为了让您了解解决方案。您只是从每一行中选择一个col,因为SelectNodes(&#34; col&#34;)没有为您提供&#34; col&#34;内的节点。它为您提供名为&#34; col&#34;。
的节点答案 1 :(得分: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
方法