创建一个xml。如下:
<?xml version="1.0" encoding="gb2312" ?> <xuzhou> <Order> <CustomerName>徐周</CustomerName> <OrderNumber>BJ2008888</OrderNumber> <Items> <OrderItem Name="电脑" Count="30"/> <OrderItem Name="电视" Count="2"/> <OrderItem Name="水杯" Count="20"/> </Items> </Order> <Order> <CustomerName>徐周</CustomerName> <OrderNumber>BJ2008888</OrderNumber> <Items> <OrderItem Name="电脑" Count="30"/> <OrderItem Name="电视" Count="2"/> <OrderItem Name="水杯" Count="20"/> </Items> </Order> <Order> <CustomerName>徐周</CustomerName> <OrderNumber>BJ2008888</OrderNumber> <Items> <OrderItem Name="电脑" Count="30"/> <OrderItem Name="电视" Count="2"/> <OrderItem Name="水杯" Count="20"/> </Items> </Order> </xuzhou>
写一个递归方法去循环 xml得到所有节点值
XDocument xdoc = XDocument.Load(@"F:\test\Solution3\WebApplication1\XMLFile1.xml"); //找到xml XElement xeRoot = xdoc.Root; //找到xml根节点 string ss= DiGui(xeRoot); //递归方法 Response.Write(ss); } static string DiGui(XElement xe) //写一个递归方法 { StringBuilder sb = new StringBuilder(); foreach (XElement xeItem in xe.Elements())//循环所有根节点下的所有节点! { foreach (var item in xeItem.Descendants("CustomerName"))// { sb.Append(item.Value); sb.Append(","); } foreach (var item in xeItem.Descendants("OrderNumber")) { sb.Append(item.Value); sb.Append("<br/>"); } foreach (var item in xeItem.Descendants("OrderItem")) { sb.Append(item.Attribute("Name").Value); sb.Append(","); sb.Append(item.Attribute("Count").Value); sb.Append("<br/>"); } DiGui(xeItem); } string ss = sb.ToString(); return ss; }
这样就可以得到我们想要的所有节点的值了,而且很简单!