<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# 实现,应该怎么写呢?
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("属性名称"); //得到属性值
}
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);
}
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
*/
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);
}
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; }
}
}
测试成功的!!
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文件路径)
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
};