DataTable 与 XML ---DataTable 读写XML




用法 :
创建结构
        DataClass.dtXml xml = new DataClass.dtXml(DataClass.sc.strXmlFile);	
	xml.createSchema(); //只创建表的结构

写入XML
            currentDt.AcceptChanges();
            currentDt.WriteXml(DataClass.sc.strXmlFile , XmlWriteMode.WriteSchema);

读XML文件
               currentDt.ReadXml(DataClass.sc.strXmlFile);
               currentDv = currentDt.DefaultView ;
               mdl.viewDataInGridView(dataGridView1, currentDv, bindingNavigator1, bindingSource1);

//-----------------------------------------------------------------------------------------------------------------


  public class dtXml
   {

     private static string fName;

     public dtXml( string _fName)
     {
        fName = _fName;
     }

     //public  
     public void createSchema()
     {
        DataTable table = new DataTable("reason" );
        DataColumn column = new DataColumn("id", typeof(System.Int32));
        column.AutoIncrement = true;
        table.Columns.Add(column);

        column = new DataColumn("item", typeof(System.String));
        table.Columns.Add(column);

        table.WriteXmlSchema(fName);

     }



      public   void DemonstrateReadWriteXMLDocumentWithString()
      {
         DataTable table = CreateTestTable("Reason");
         PrintValues(table, "Original table");

         //string fileName = "d:\\TestData.xml";
         table.WriteXml( fName , XmlWriteMode.WriteSchema);

         DataTable newTable = new DataTable();
         newTable.ReadXml(fName);

         // Print out values in the table.
         PrintValues(newTable, "New table");
      }

      private  DataTable CreateTestTable(string tableName)
      {
         // Create a test DataTable with two columns and a few rows.
         DataTable table = new DataTable(tableName);
         DataColumn column = new DataColumn("id", typeof(System.Int32));
         column.AutoIncrement = true;
         table.Columns.Add(column);

         column = new DataColumn("item", typeof(System.String));
         table.Columns.Add(column);

         // Add ten rows.
         DataRow row;
         for (int i = 0; i <= 9; i++)
         {
            row = table.NewRow();
            row["item"] = "item " + i;
            table.Rows.Add(row);
         }

         table.AcceptChanges();
         return table;
      }

      private  void PrintValues(DataTable table, string label)
      {
         Console.WriteLine(label);
         foreach (DataRow row in table.Rows)
         {
            foreach (DataColumn column in table.Columns)
            {
               Console.Write("\t{0}", row[column]);
            }
            Console.WriteLine();
         }
      }

   }

生成的 XML 文件格式如下:


<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="reason" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="reason">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="id" msdata:AutoIncrement="true" type="xs:int" minOccurs="0" />
                <xs:element name="item" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <reason>
    <id>0</id>
    <item>错送</item>
  </reason>
  <reason>
    <id>1</id>
    <item>有问题</item>
  </reason>
  <reason>
    <id>2</id>
    <item>短重</item>
  </reason>
  <reason>
    <id>3</id>
    <item>破损</item>
  </reason>
  <reason>
    <id>4</id>
    <item>送少</item>
  </reason>
  <reason>
    <id>5</id>
    <item>原因不明</item>
  </reason>
  <reason>
    <id>6</id>
    <item>原因很多</item>
  </reason>
</NewDataSet>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值