<Customers>
  <Customer Name="苏南坡" CreateDate="2009-03-22" UpdateDate="2010-05-12" Department="Sale" age="27"  SiteRurl="http://www.snp.com" ConteURL="http://to.snp.com">
    <Description>Sale's department</Description> 
    <SalesAccount>
       <Sales>12000</Sales> 
    </SalesAccount>
    <ElseDepartment>
       <Department>
         <Sample>Nothing</Sample> 
       </Department>
    </ElseDepartment>
  </Customer>
  <Customer Name="LiHong" CreateDate="2009-03-26" UpdateDate="2010-05-22" Department="技术" age="29"  SiteRurl="http://www.lihong.com" ConteURL="http://to.ligho.com">
    <Description>Tech's department</Description> 
    <SalesAccount>
       <Sales>12700</Sales> 
    </SalesAccount>
    <ElseDepartment>
       <Department>
         <Sample>Nothing</Sample> 
       </Department>
    </ElseDepartment>
  </Customer>
</Customers>
请问,我要查询 Sales=12000 并且 age=27 的所有 Customer 的 Name,SiteRurl,ConteURL,Description,
用 C# 实现,应该怎么写呢?

解决方案 »

  1.   

    用XML的LINQ很简单你去查查这方面的资料
      

  2.   


    XmlDocument xmlDoc = new XmlDocument();
             xmlDoc.Load(xmlPath + "\\" + "Writer.xml");// 找到要添加的xml文件 
    XmlNode rootNode = xmlDoc.SelectSingleNode("Customers");//查找
    foreach (XmlNode xnf in rootNode.ChildNodes)
    {
    XmlElement xe = (XmlElement)xnf;
    string thumPathOld = xe.GetAttribute("属性名称");  //得到属性值
    }
      

  3.   


    XElement xelement = XElement.Load(xmlPath);
    var query = from x in xelement.Elements("Customer")
                      where x.Descendants("Sales").Select(t => t.Value).Contains("12000") select new
                      {
                       Name = x.Attribute("Name").Value,
                       SiteRurl = x.Attribute("SiteRurl").Value,
                       ConteURL = x.Attribute("ConteURL").Value,
                       Description = x.Descendants("Description").Select(m=>m.Value)               
                      };foreach (var q in query)
    {
        Console.WriteLine(q.Name);
        Console.WriteLine(q.SiteRurl);
        Console.WriteLine(q.ConteURL);
        Console.WriteLine(q.Description);
    }
      

  4.   

               var Query=XDocument.Parse(xml).Element("Customers").Elements("Customer").
                    Where(x=>x.Attribute("age").Value=="27" && x.Element("SalesAccount").Element("Sales").Value=="12000").
                    Select(x=>new{
                        Name=x.Attribute("Name").Value,
                        SiteRurl=x.Attribute("SiteRurl").Value,
                        ConteURL=x.Attribute("ConteURL").Value,
                        Description=x.Element("Description").Value});            foreach (var v in Query)
                {
                    Console.WriteLine("Name={0}     SiteRul={1}     ConteURL={2}        Description={3}",v.Name,v.SiteRurl,v.ConteURL,v.Description);
                }
                /*
                Name=苏南坡     SiteRul=http://www.snp.com     ConteURL=http://to.snp.com
                 Description=Sale's department
                */
      

  5.   


    Sorry, 有点错误,纠正一下XElement xelement = XElement.Load(xmlPath);
    var query = from x in xelement.Elements("Customer")
                      where x.Descendants("Sales").Select(t => t.Value).Contains("12000") && x.Attribute("age").Value=="27" select new
                      {
                          Name = x.Attribute("Name").Value,
                          SiteRurl = x.Attribute("SiteRurl").Value,
                          ConteURL = x.Attribute("ConteURL").Value,
                          Description = x.Descendants("Description").SingleOrDefault().Value               
                      };foreach (var q in query)
    {
        Console.WriteLine(q.Name);
        Console.WriteLine(q.SiteRurl);
        Console.WriteLine(q.ConteURL);
        Console.WriteLine(q.Description);
    }
      

  6.   

      XmlDocument doc = new XmlDocument();
                doc.Load("../../XMLFile.xml");
                XmlNode xnode = null;
                XmlElement rootnode = doc.DocumentElement;
                foreach (XmlNode subnode in rootnode.ChildNodes)
                {
                    string age="27";
                    XmlElement xElemAge = (XmlElement)subnode.SelectSingleNode("//Customer[@age='" + age+ "']");              
                    if (xElemAge != null)
                    {
                        XmlElement xElemSales = (XmlElement)xElemAge.SelectSingleNode("//SalesAccount//Sales");
                       if (xElemSales.InnerText == "12000")
                       {
                           XmlElement xElemDescription = (XmlElement)xElemAge.SelectSingleNode("//Description");
                           string Description = xElemDescription.InnerText;
                           string name = xElemAge.Attributes["Name"].Value;
                           string SiteRurl = xElemAge.Attributes["SiteRurl"].Value;
                           string ConteURL = xElemAge.Attributes["ConteURL"].Value;                    }
                    }
                }
    测试成功的!!
      

  7.   


    public List<XmlNode> ReadXml()
            {
                List<XmlNode> nodeList = new List<XmlNode>();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(@"E:\Test\WebTest\Test.xml");// 找到要添加的xml文件 
                XmlNode rootNode = xmlDoc.SelectSingleNode("Customers");//查找
                foreach (XmlNode xnf in rootNode.ChildNodes)
                {
                    XmlElement xe = (XmlElement)xnf;
                    if (xe.GetElementsByTagName("Sales")[0].InnerText == "12000" && xe.Attributes["age"].Value == "27")
                        nodeList.Add(xe);
                }
                return nodeList;
            }返回的就是你要的的结果(注意修改XML文件路径)
      

  8.   


     XElement xelement = XElement.Load("../../xml1.xml");
     var query = from x in xelement.Descendants("Customer")
                              where x.Descendants("Sales").FirstOrDefault().Value == "12000"
                              && x.Attribute("age").Value == "27"
                              select new
                              {
                                  Name = x.Attribute("Name").Value,
                                  SiteRurl = x.Attribute("SiteRurl").Value,
                                  ConteURL = x.Attribute("ConteURL").Value,
                                  Description = x.Element("Description").Value
                              };