将数据导出到xml,并从xml导入数据
xml本质上是数据,是另一种格式的数据。而ADO.NET就是用来处理数据的。因此通过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);
}
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=629963
分享到:
相关推荐
### ASP.NET C# 将数据导出到XML,并从XML导入数据 #### 1. 初始化数据集(DataSet) 首先,我们需要创建一个数据集(`DataSet`)来存储从数据库中读取的数据。`DataSet`是ADO.NET中的核心组件之一,它可以看作是...
例如,可能有一个函数用于将DataTable导出为XML文件,另一个函数用于从XML文件中读取数据并填充到新的DataTable。通过学习和理解这个DEMO,开发者可以掌握XML在C#应用程序中的基本操作,并应用于实际项目中,提高...
对于导出XML文件,Java提供了`Transformer`和`TransformerFactory`类来将DOM树转换为XML字符串或直接写入文件。首先创建`TransformerFactory`,然后使用`newTransformer()`创建`Transformer`实例,最后调用`...
根据提供的文件信息,本文将对Oracle数据库中导入导出XML文件的相关知识点进行详细的解析与介绍。主要内容包括如何通过Java代码实现Oracle数据库与XML文件之间的数据交互,并深入理解所提供代码的具体功能。 ### ...
本话题将详细讲解如何利用Java技术,特别是JDOM库,来实现在不同的数据库之间导入XML数据,以及如何将数据库中的数据导出到XML文件。同时,我们还会涉及到Ajax技术在前端交互中的应用。 首先,让我们了解XML...
本教程将详细介绍如何使用Java进行XML数据的导入和导出,并与MySQL数据库进行操作。 首先,导入XML数据到MySQL数据库通常涉及以下步骤: 1. **解析XML文件**:Java提供了多种解析器来读取XML文件,如DOM(Document...
2. 导入XML:使用`OPENXML`函数配合`sp_xml_preparedocument`和`sp_xml_removedocument`存储过程,可以将XML数据解析并插入到表中。另外,T-SQL也支持直接的XML类型列,可以直接将XML字符串插入到XML类型的字段。 ...
首先,我们要理解数据导入导出的核心目的:将数据从一个系统或文件中读取并写入另一个系统或文件。在Java中,这通常涉及到文件操作和数据序列化/反序列化的技术。 1. **Excel数据导入导出**: Java中处理Excel文件...
5. **数据库操作**:在MySQL中,可能需要创建表来存储从XML导入的数据,这涉及到SQL的DDL(Data Definition Language)语句,如CREATE TABLE。为了匹配XML结构,需要正确设计数据库表的字段和数据类型。 6. **异常...
本示例中的“VB导入导出XML文件”可能是通过VB编写的一个程序,该程序实现了从XML文件中读取数据并显示在一个网格(如DataGridView)中,同时也能将用户在网格中的修改保存回XML文件。这样的功能对于数据管理、配置...
### datagridview导入导出XML #### 概述 在C#编程中,`DataGridView` 控件是用于显示数据表的常用工具之一。它能够方便地展示数据,并且支持多种数据源,包括 `DataTable`、`BindingList<T>` 等。在实际应用中,...
XML导入涉及到解析XML文档并将其转换为程序可以处理的对象。C#中,我们可以使用`XmlDocument`或`XDocument`类来加载XML文件。例如: ```csharp // 使用XmlDocument XmlDocument xmlDoc = new XmlDocument(); xmlDoc...
数据导入是指将外部数据源的数据引入到特定的目标系统中,例如将Excel表格中的数据导入到数据库中。这个过程通常用于更新现有数据、补充新数据或创建新的数据集。数据导入的关键在于确保数据的准确性和完整性,避免...
在Microsoft Access中,XML(可扩展标记语言)是一种常用的数据交换格式,允许用户将数据库对象和数据导出到XML文件,或从XML文件导入到Access数据库。本资源"ACCESS对象导入与导出XML模块.rar"提供了易语言编写的...
然后,关于导出XML文件,文档中并没有详细描述实现方式,但可以推测,导出功能很可能是通过服务器端生成相应的XML文件,并通过Ajax请求将文件作为响应返回给客户端,然后利用JavaScript触发浏览器的下载功能。...