XML文件如下:
<root>
  <a>
    <b>1</b>
    <c>c1</c>
  </a>
  <a>
    <b>2</b>
    <c>c2</c>
  </a>
</root>如何获取节点<b>=1的<a>节点的所有子节点,即要获得:
  <a>
    <b>1</b>
    <c>c1</c>
  </a>SelectSingleNode()里面要怎么写?

解决方案 »

  1.   


    void Main()
    {
    string str =@"<root>
      <a>
      <b>1</b>
      <c>c1</c>
      </a>
      <a>
      <b>2</b>
      <c>c2</c>
      </a>
    </root>";
      var data=XElement.Parse(str);
       
      var query=from x in data.Descendants("a")   
       where x.Element("b").Value=="1"
    select x;
     
    }
      

  2.   

      string str = @"<root>
      <a>
      <b>1</b>
      <c>c1</c>
      </a>
      <a>
      <b>2</b>
      <c>c2</c>
      </a>
    </root>";
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(str);
                XmlNode node = xml.SelectSingleNode("//b[text()=2]").ParentNode;
      

  3.   


                XmlDocument doc = new XmlDocument();
                doc.Load("E:\\test.xml");
                XmlNodeList list = doc.SelectNodes(@"/root/a[b=1]");
                foreach (XmlNode node in list)
                    Console.WriteLine(node.OuterXml);
      

  4.   

    2楼的方法是可以啦,但有没有像
    <root>
       <a d=1>
       <b>1</b>
       <c>c1</c>
       </a>
       <a d=2>
       <b>2</b>
       <c>c2</c>
       </a>
    </root>
    xmldoc = new XmlDocument();
    xmldoc.Load("file.xml");
    XmlNodeList lst = xmldoc.SelectNodes("root/a[@d='1']");
    这种用SelectNodes()通过制定属性值来获取节点的方法,感觉这种方法数据量大时用起来快点
      

  5.   


      foreach (XmlElement element in topm)
                {
                    if (element.Name.ToLower() == "row")
                    {
                        //得到该节点的子节点
                        XmlNodeList nodelist = element.ChildNodes;
                        if (nodelist.Count > 0)
                        {
                            foreach (XmlElement el in nodelist)//读元素值
                            {
      

  6.   

    myXmlType.Load("Item.xml");
                //光滑程度
                XmlNodeList PolyMetalType = myXmlType.GetElementsByTagName("a");