将数据导出到xml,并从xml导入数据
xml本质上是数据,是另一种格式的数据。而ADO.NET就是用来处理数据的。因此通过DataSet可以非常方便的处理xml。下面这段程序对如下问题做出了解答:
怎样从DataSet得到xml?
生成的XML没有表之间的关系怎么办?
怎样把列数据作为子元素?(在利用数据集得到XML时)
怎样把列数据作为属性?(在利用数据集得到XML时)
怎样利用数据集形成XML文件?
怎样设置xml的namespace和prefix?
怎样控制控制文本的格式?
怎样把XML文件里的数据读入数据集?
怎样利用XML文件传递数据集架构?
怎样利用XML文件在不同数据集之间传递更改?
using System;
using System.Data;
using System.Data.OleDb;
using General.ADONET;
using General.ADONET.OLEDBClient;
using System.IO;
using System.Xml;
namespace PlayXML
{
///<summary>
/// PlayXML 的摘要说明。
///</summary>
public class XMLPlayer
{
public XMLPlayer()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private Adapter adptEmp;
private Adapter adptDept;
private OleDbConnection conn;
private DataSet dsHR;
//初始化数据集
public voidInitDataSet()
{
string strConn = "Provider = Microsoft.Jet.OLEDB.4.0;";
strConn += "Data Source = E:\\everyday\\VS\\HELPREN\\hr.mdb;";
this.conn = new OleDbConnection(strConn);
dsHR = new DataSet();
this.adptEmp =
new Adapter(this.conn, dsHR, "employees");
this.adptDept =
new Adapter(this.conn, dsHR, "departments");
this.adptDept.Fill();
this.adptEmp.Fill();
DataTable dtDept = this.dsHR.Tables["departments"];
DataTable dtEmp = this.dsHR.Tables["employees"];
DataColumn colParent = dtDept.Columns["dept_id"];
DataColumn colChild = dtEmp.Columns["emp_department"];
dsHR.Relations.Add(
"departments_employees",
colParent, colChild);//关系
}
//怎样从DataSet得到xml?
public void GetXml()
{
Console.WriteLine(
this.dsHR.GetXml()//这个方法就是从DataSet得到xml
);
}
//生成的XML没有表之间的关系怎么办?
public void GetXmlWithRalation()
{
//指定DataRelation在DataSet中进行嵌套
//使xml序列化生成关系
this.dsHR.Relations["departments_employees"].Nested = true;
Console.WriteLine(
this.dsHR.GetXml()//这个方法就是从DataSet得到xml
);
}
//怎样把列数据作为子元素?(在利用数据集得到XML时)
public void GetSubElements()
{
DataTable dtEmp = this.dsHR.Tables["employees"];
foreach(DataColumn col in dtEmp.Columns)
{
//列的ColumnMapping属性设置为MappingType.Element就可以了
col.ColumnMapping = MappingType.Element;
}
DataTable dtDept = this.dsHR.Tables["departments"];
foreach(DataColumn col in dtDept.Columns)
{
//列的ColumnMapping属性设置为MappingType.Element就可以了
col.ColumnMapping = MappingType.Element;
}
this.dsHR.GetXml();
}
//怎样把列数据作为属性?(在利用数据集得到XML时)
public void GetAttributes()
{
DataTable dtEmp = this.dsHR.Tables["employees"];
foreach(DataColumn col in dtEmp.Columns)
{
//列的ColumnMapping属性设置为MappingType.Attribute就可以了
col.ColumnMapping = MappingType.Attribute;
}
DataTable dtDept = this.dsHR.Tables["departments"];
foreach(DataColumn col in dtDept.Columns)
{
//列的ColumnMapping属性设置为MappingType.Attribute就可以了
col.ColumnMapping = MappingType.Attribute;
}
this.dsHR.GetXml();
}
//怎样利用数据集形成XML文件?
public void WriteXml()
{
//怎样设置xml的namespace和prefix?
this.dsHR.Namespace = "ADONET";
this.dsHR.Prefix = "an";
this.dsHR.WriteXml("test.xml", XmlWriteMode.WriteSchema);
//怎样控制控制文本的格式?
StreamWriter sw = new StreamWriter("test2.xml");
XmlTextWriter xmlWriter = new XmlTextWriter(sw);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 10;
this.dsHR.WriteXml(xmlWriter);
xmlWriter.Close();
}
//怎样把XML文件里的数据读入数据集?
public void ReadXml()
{
DataSet dsNew = new DataSet();
dsNew.ReadXml("test.xml");
Console.WriteLine(dsNew.GetXml());
}
//怎样利用XML文件传递数据集架构?
public void TransmitSchema()
{
StreamWriter sw = new StreamWriter("test.xsd");
XmlTextWriter xmlWriter = new XmlTextWriter(sw);
this.dsHR.WriteXmlSchema(xmlWriter);
xmlWriter.Close();
DataSet dsNew = new DataSet();
dsNew.ReadXmlSchema("test.xsd");
foreach(DataTable dt in dsNew.Tables)
{
Console.WriteLine(dt.TableName);
foreach(DataColumn dc in dt.Columns)
{
Console.WriteLine(" " + dc.ColumnName);
}
}
}
//怎样利用XML文件在不同数据集之间传递更改?
public void PlayDiffGram()
{
//为两个datatable设置主键
DataTable dtEmp = this.dsHR.Tables["employees"];
DataTable dtDept = this.dsHR.Tables["departments"];
dtEmp.PrimaryKey = new DataColumn[]
{dtEmp.Columns["emp_id"]};
dtDept.PrimaryKey = new DataColumn[]
{dtDept.Columns["dept_id"]};
//把数据集写到xml文件
StreamWriter sw = new StreamWriter("test.xml");
XmlTextWriter xmlWriter = new XmlTextWriter(sw);
this.dsHR.WriteXml(xmlWriter, XmlWriteMode.WriteSchema);
sw.Close();
//从xml文件读入数据到一个新的数据集里
DataSet dsNew = new DataSet();
dsNew.ReadXml("test.xml", XmlReadMode.ReadSchema);
dsNew.AcceptChanges();
//修改值
this.dsHR.Tables["employees"].Rows[0]["emp_name"] = "aaaaa";
dsNew.Tables["employees"].Rows[0]["emp_name"] = "ccccc";
//把新数据集里的数据输出到xml文件
Stream newStream = new MemoryStream() as Stream;
XmlTextWriter xmlNewWriter =
new XmlTextWriter(newStream, null);
xmlNewWriter.Formatting = Formatting.Indented;
dsNew.GetChanges().WriteXml(xmlNewWriter, XmlWriteMode.DiffGram);
//显示现在xml文件的内容
newStream.Position = 0;
StreamReader rdr = new StreamReader(newStream);
Console.WriteLine(rdr.ReadToEnd());
newStream.Position = 0;
//把现在的xml文件的内容读到原先的那个数据集
this.dsHR.ReadXml(newStream, XmlReadMode.DiffGram);
}
}
}
分享到:
相关推荐
asp.net c # xml 将数据导出到xml,并从xml导入数据 ado.net
C# 数据表导出XML,XML导入绑定,主从表的DEMO
这是一个java对xml操作的两个类,xml文件的节点都是已知的,都需要提前指定.
用java实现xml数据的导入导出数据库为mysql
利用Java技术,通过jdom实现从xml导入不同数据库,然后再从数据库导出到xml文件,中间用了点简单的Ajax技术
java代码,oracle数据库中导入导出xml文件,代码简单
c#datagridview导入导出xml
实测可用的VB导入导出XML文件 导入到一个网格中. 可以自行修改为记录等等其他形式
SQL Server,MySQL在开发中)中的数据直接导出到打开的任意表格中(支持MS Excel和WPS表格),也可以从任意打开表格中将数据导入到数据库中,还可以将变更前的数据先保存到XML中,数据变化后,可以变化的数据导出到...
可以根据表的id导入和导出excell、xml、txt等格式
这是代码+文档+数据库的资料,是java+mysql数据库做的,实现了xml与数据库中数据的导入导出,是我一个晚上做出来的,因为要去做其它的项目,所有只做出对特定数据库的操作,仅供参考互相学习!
ajax导出xml调用浏览器下载功能; ajax导入文件说明及注意事项
C#Xml导入导出 看着方法调用就行了
以XML格式导入导出密钥.rar以XML格式导入导出密钥.rar以XML格式导入导出密钥.rar
可以保存所有界面上的控件数据,包括EDIT LISTCONTRL BUTTON之类的数据.比如标题,选中状态之类的到XML.再从XML加载到控件.通过遍历的方法.一劳永逸