<Customers>
  <User name="aaa" age="21">
    <Address>
       Shanghai
    </Address>
    <Technology>
       C#
    </Technology>
  </User>
  <User name="bbb" age="22">
    <Address>
       Zhejiang
    </Address>
    <Technology>
       javascript
    </Technology>
  </User>
  <User name="ccc" age="23">
    <Address>
       Zhejiang
    </Address>
    <Technology>
       Delphi
    </Technology>
  </User>
</Customers>请问,我如果要获取 name="bbb" 的节点下面的 Address节点的值zhejiang,C#应该怎么写呢?

解决方案 »

  1.   

          System.Xml.XmlNode xn = xd.SelectSingleNode("User/[@name='ccc']/Address");
      if (xn != null)
                    return xn.Attributes["Source"].Value;
      

  2.   

            string xmlStr = "....";
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(xmlStr);
            XmlNodeList xnlUser = xd.SelectNodes("Customers/User");
            string bAddress = "";
            foreach(XmlNode xnUser in xnlUser)
            {
                if(xnUser.Attributes["name"].Value == "bbb")
                {
                    bAddress = xnUser.SelectSingleNode("Address").InnerText;
                    break;
                }
            }
      

  3.   


    void Main()
    {
       string xml = @"<Customers>
      <User name=""aaa"" age=""21"">
    <Address>
       Shanghai
    </Address>
    <Technology>
       C#
    </Technology>
      </User>
      <User name=""bbb"" age=""22"">
    <Address>
       Zhejiang
    </Address>
    <Technology>
       javascript
    </Technology>
      </User>
      <User name=""ccc"" age=""23"">
    <Address>
       Zhejiang
    </Address>
    <Technology>
       Delphi
    </Technology>
      </User>
    </Customers>";
    XElement xmlPage = XElement.Parse(xml);
    var q = from x in xmlPage.Descendants("User")
    where x.Attribute("name").Value == "bbb"
    select x.Element("Address").Value;
    q.ToList().ForEach(l=>Console.WriteLine(l));
    }/*
     Zhejiang
    */
      

  4.   

                string xml = @"<Customers>
      <User name=""aaa"" age=""21"">
      <Address>
      Shanghai
      </Address>
      <Technology>
      C#
      </Technology>
      </User>
      <User name=""bbb"" age=""22"">
      <Address>
      Zhejiang
      </Address>
      <Technology>
      javascript
      </Technology>
      </User>
      <User name=""ccc"" age=""23"">
      <Address>
      Zhejiang
      </Address>
      <Technology>
      Delphi
      </Technology>
      </User>
    </Customers>";
                XDocument Doc = XDocument.Parse(xml);
                var query = Doc.Descendants("User").Where(x => x.Attribute("name").Value == "bbb").Select(x => x.Element("Address").Value);
                foreach (var v in query)
                {
                    Console.WriteLine(v.ToString());
      

  5.   

    可以根据xml path 来直接获取
     此消息通过 【CSDN论坛 Winform测试版】 回复!龙月.NET的博客