C# XML XPath SelectSingleNode问题

C# XML XPath SelectSingleNode问题,c#,xml,xpath,selectsinglenode,C#,Xml,Xpath,Selectsinglenode,我试图在主文档的childnodes中选择某些节点 XmlNodeList nodes = xml.SelectNodes("//RECORD"); for (int i = 0; i < nodes.Count; i++) { Console.WriteLine("Time: " + nodes[i].SelectSingleNode("//content2").InnerText); } XmlNodeList nodest nodes=xml.Se

我试图在主文档的childnodes中选择某些节点

XmlNodeList nodes = xml.SelectNodes("//RECORD");

for (int i = 0; i < nodes.Count; i++)
{           
     Console.WriteLine("Time: " + nodes[i].SelectSingleNode("//content2").InnerText);
}
XmlNodeList nodest nodes=xml.SelectNodes(//RECORD”);
for(int i=0;i
结果是,每个content2节点上的所有内容都具有相同的值,但在XmlDocument中,每个“记录”的content2值都是递增的

例如,如果我查看NodeList,每个content2节点都会从1增加到32


为什么SelectSingleNode返回相同的节点?如何让它从子节点中选择它?

这是因为您在节点[I]的XPATH中使用了//content2在XPATH中,表示在任何级别查看所有实例。您应该执行//RECORD/content2的XPATH,然后循环这些节点。

从XPATH字符串中省略“/”。这将查看所选XML的内部,而不是整个文档。

我同意,但是,每个记录中都需要大量节点,而不仅仅是一个。我如何只查看内部?是否省略“/”?删除“/”将获取集合中遇到的第一个节点。因此,如果您循环选择单个节点,您仍然总是要获取第一个节点。对于您正在执行的操作,您需要使用SelectNodes(使用XPATH而不使用//获取所有节点),然后循环该结果集。而不是XML文档中的第一个。
XmlNodeList nodes = xml.SelectNodes("//RECORD");

for (int i = 0; i < nodes.Count; i++)
{           
     Console.WriteLine("Time: " + nodes[i].SelectSingleNode("//content2").InnerText);
}