DataSet,非表型XML解析

来源:互联网 发布:亿和数据 编辑:程序博客网 时间:2024/04/30 11:28
  1. //DataSet,非表型XML解析
  2.             //C:/test.xml
  3.             //<?xml version="1.0" encoding="utf-8"?>
  4.             //<OrderInfo>
  5.             //  <CustomerInfo>
  6.             //    <Customer name="pyh" operationDate="2008-09-19" time="00:00:00" id="2002032201" />
  7.             //  </CustomerInfo>
  8.             //  <OrderProcesses>
  9.             //    <PRODUCT ID="PROD001" name="J2SE">
  10.             //      <ADDRESS>
  11.             //        <ADDRESSDETAILS province="HeiLongJiang" name="HIT" />
  12.             //        <ADDRESSDETAILS province="LiaoNing" name="HD" />
  13.             //      </ADDRESS>
  14.             //      <PHONE>
  15.             //        <PHONENUMBER directionNumeber="0451" Number="86677710" />
  16.             //        <PHONENUMBER directionNumeber="0411" Number="3198297" />
  17.             //      </PHONE>
  18.             //    </PRODUCT>
  19.             //    <PRODUCT ID="PROD002" name="J2EE">
  20.             //      <ADDRESS>
  21.             //        <ADDRESSDETAILS province="HeiLongJiang1" name="HIT1" />
  22.             //        <ADDRESSDETAILS province="LiaoNing1" name="HD1" />
  23.             //      </ADDRESS>
  24.             //      <PHONE>
  25.             //        <PHONENUMBER directionNumeber="0452" Number="86677714" />
  26.             //        <PHONENUMBER directionNumeber="0413" Number="3198275" />
  27.             //      </PHONE>
  28.             //    </PRODUCT>
  29.             //    <PRODUCT ID="PROD003" name="J2ME">
  30.             //      <MESSAGE />
  31.             //      <ADDRESS>
  32.             //        <ADDRESSDETAILS province="HeiLongJiang2" name="HIT2" />
  33.             //        <ADDRESSDETAILS province="LiaoNing2" name="HD2" />
  34.             //      </ADDRESS>
  35.             //      <PHONE>
  36.             //        <PHONENUMBER directionNumeber="0455" Number="86677716" />
  37.             //        <PHONENUMBER directionNumeber="0416" Number="3198278" />
  38.             //      </PHONE>
  39.             //    </PRODUCT>
  40.             //    </PROC>
  41.             //  </OrderProcesses>
  42.             //</OrderInfo> 
  43.             DataSet ds = new DataSet();
  44.             string fullPathXml = @"C:/test.xml";
  45.             XDocument xDoc = XDocument.Load(fullPathXml);
  46.             ds.ReadXml(xDoc.CreateReader());
  47.             DataTable dt = ds.Tables[0];
  48.             //ds.Tables[?]
  49.             //0:OrderInfo           //什么也没有
  50.             //1:CustomerInfo        //什么也没有    
  51.             //2:Customer            //有一行
  52.             //3:OrderProcesses      //什么也没有
  53.             //4:PRODUCT             //什么也没有
  54.             //5:ADDRESS             //什么也没有
  55.             //6:ADDRESSDETAILS      //有六行,所有的"ADDRESSDETAILS"tag
  56.             //7:PHONE               //什么也没有
  57.             //8:PHONENUMBER         //有六行,所有的"PHONENUMBER"tag
  58.             //9:MESSAGE             //什么也没有
  59.             //取得Customer的信息
  60.             DataTable dt2 = ds.Tables[2];
  61.             DataRow dr2 = dt2.Rows[0];
  62.             string CustomerName = (string)dr2.ItemArray.GetValue(0);             //Customer name="pyh" 
  63.             string CustomerOperationDate = (string)dr2.ItemArray.GetValue(1);     //operationDate="2008-09-19"
  64.             string CustomerTime = (string)dr2.ItemArray.GetValue(2);              //time="00:00:00"
  65.             //取得ADDRESSDETAILS的信息
  66.             DataTable dt6 = ds.Tables[6];
  67.             DataRow dr60 = dt2.Rows[0];          //<ADDRESSDETAILS province="HeiLongJiang" name="HIT" />
  68.             DataRow dr61 = dt2.Rows[1];          //<ADDRESSDETAILS province="LiaoNing" name="HD" />
  69.             string ADDRESSDETAILSProvince = (string)dr60.ItemArray.GetValue(0);                //province="HeiLongJiang"
  70.             string ADDRESSDETAILSName = (string)dr60.ItemArray.GetValue(1);                    //name="HIT"
  71.             //取得ADDRESSDETAILS节点所在的PRODUCT节点的ID,ADDRESS_ADDRESSDETAILS是relationName,dataSet倒入xml文件时自带的
  72.             string temp = (string)dr60.GetParentRow("ADDRESS_ADDRESSDETAILS").GetParentRow("PRODUCT_ADDRESS").ItemArray.GetValue(0);
  73.             //用DataTable直接给DataGridView赋值
  74.             //dataGridView1不含有任何列
  75.             dataGridView1.DataSource = dt6;    //dataGridView1将自动产生两列:province,name。并且追加六条数据。
  76.               //|province           |   name   |  
  77.             //|HeiLongJiang       |  HIT     |
  78.             //|LiaoNing           |  HD      |
  79.             //|HeiLongJiang1      |  HIT1    |
  80.             //|LiaoNing1          |  HD1     |
  81.             //|HeiLongJiang2      |  HIT2    |
  82.             //|LiaoNing2          |  HD2     |
原创粉丝点击