如下xml文档
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tree name="top"><leafage></leafage></tree>
<tree name="middle"><leafage></leafage></tree>
<tree name="bottom"><leafage></leafage></tree>
<tree name="top"><leafage></leafage></tree>
<tree name="middle"><leafage></leafage></tree>
<tree name="bottom"><leafage></leafage></tree>
</root>
怎么用xpath查出所有的tree name
结果应为 top,middle,bottom

解决方案 »

  1.   

      XmlDocument xd = new XmlDocument();
                xd.Load(@"..\..\XMLFile1.xml");
                XmlNodeList node = xd.SelectNodes("root/tree");
                foreach (XmlNode cnode in node)
                    Console.WriteLine(cnode.Attributes["name"].Value);
      

  2.   

    XPATH里怎么使用 DISTINCT ?
      

  3.   

      xd.Load(@"..\..\XMLFile1.xml");
                XmlNodeList node = xd.SelectNodes("root/tree/@name");
                foreach (XmlNode cnode in node)
                    Console.WriteLine(cnode.Value);这样也可以
      

  4.   

    //tree[not(@name=preceding-sibling::tree/@name)]/@name
      

  5.   

     string str=@"<?xml version=""1.0"" encoding=""UTF-8""?> 
                <root> 
                <tree name=""top""> <leafage> </leafage> </tree> 
                <tree name=""middle""> <leafage> </leafage> </tree> 
                <tree name=""bottom""> <leafage> </leafage> </tree> 
                <tree name=""top""> <leafage> </leafage> </tree> 
                <tree name=""middle""> <leafage> </leafage> </tree> 
                <tree name=""bottom""> <leafage> </leafage> </tree> 
                </root> 
                ";
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(str);
                //*[not( name()=name(following-sibling::*) )] 
                XmlNodeList nodes = xmlDoc.SelectNodes("root/tree[not(@name=following-sibling::tree/@name)]/@name");
                foreach (XmlNode node in nodes)
                {
                    Console.WriteLine(node.Value);
                }输出:top,middle,bottom
      

  6.   

    当然不要使用遍历啦,假如有上万的数据或更多,你要查出不同的tree name值,特别影响效率啦
      

  7.   


    following_sibling与preceding-sibling都可以;