xml学习三

  创建一个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;
             
        }

这样就可以得到我们想要的所有节点的值了,而且很简单!

原文地址:https://www.cnblogs.com/xu3593/p/3108172.html