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