XmlDataDocument

本文介绍了XmlDataDocument类的功能及使用方法,该类能够实现与DataSet类之间的数据同步,适用于处理XML数据并实现在不同系统平台间的数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XmlDataDocument类表示DataSet类的XML文档对象。通过将一个XmlDataDocument类实例绑定到DataSet,并在数据修改时保持同步,可以在关系数据和层次数据之间形成交互关系。

XmlDataDocument类是XmlDocument类的派生类。在需要对XML数据进行处理时,XmlDataDocument类实例和DataSet类实例保持同步,优于将数据加载到DataSet再处理。在不同的系统平台之间采用XML交换数据时,使用XmlDataDocument类实例和DataSet类实例同步机制,可以直接将其他系统平台返回的XML数据反映到DataSet类实例中。

DataSet类实例和XmlDataDocument类实例在同步的时候使用同一组缓存数据。也就是说在任何一方,DataSet类实例或者XmlDataDocument类实例上的修改,另一方的数据可以即时反映出来。DataSet类实例和XmlDataDocument类实例的同步给数据处理带来了很大的灵活性。以为同一组数据具有两种类的表现形式,所以,这组数据既可以作为DataSet类实例进行关系数据的处理,也可以作为XmlDataDocument类实例进行层次数据的处理。

语法定义:

public class XmlDataDocument : XmlDocument

下面演示使用不同的方法建立XmlDataDocument类的实例

//创建一个新的XmlDataDocument类实例
XmlDataDocument datadoc = new XmlDataDocument();

//从原有的DataSet类实例创建XmlDataDocument类实例
DataSet ds = new DataSet();
XmlDataDocument = new XmlDataDocument(ds);

方法:

Load:将XML文档数据赋予XmlDocument类

LoadXml:直接将XML字符串赋予XmlDocument类

Save:保存XML文档到指定的对象中

ReadNode:从XmlReader 创建节点

ImportNode:从外部导入一个节点到当前文档

WriteTo:使用XmlWriter保存XML文档对象

CreateCDataSection: 创建CData节点

CreateComment:创建注释节点

CreateDocumentFragment:创建XML文档片段

CreateDocumentType:创建新的XML文档类型

CreateEntityReference:创建实体引用

CreateProcessingInstruction:创建处理指令

CreateSignificantWhitespace:创建空白符号

CreateTextNode:创建文本节点

CreateWhitespace:创建空白符号

CreateXmlDeclaration:创建一个XML声明

GetElementById:获得指定ID的Element

GetElementsByTagName:获得指定名称Element的子节点列表

GetRowFromElement:获得与指定XmlElement关联的DataRow类实例

Normalize:将XML文档数据“正常化”


下面演示如何把DataSet数据加载到XmlDataDocument实例中,然后参加一条数据记录。代码如下

      static void Main(string[] args)
        {
            System.IO.StringReader builder = new System.IO.StringReader("<employee>" +
            "<name></name><age></age><sex></sex><email></email></employee>");

            XmlReader reader = XmlReader.Create(builder);
            DataSet ds = new DataSet("empdata");
            ds.EnforceConstraints = false;
            ds.ReadXmlSchema(reader);
            reader.Close();
            XmlDataDocument datadoc = new XmlDataDocument(ds);
            //创建数据
            XmlElement root = datadoc.CreateElement("empdata");
            datadoc.AppendChild(root);
            XmlElement employee = datadoc.CreateElement("employee");
            root.AppendChild(employee);
            XmlElement name = datadoc.CreateElement("name");
            name.InnerText = "John";
            employee.AppendChild(name);
            XmlElement age = datadoc.CreateElement("age");
            age.InnerText = "25";
            employee.AppendChild(age);
            XmlElement sex = datadoc.CreateElement("sex");
            sex.InnerText = "male";
            employee.AppendChild(sex);
            XmlElement email = datadoc.CreateElement("email");
            email.InnerText = "john@hotmail.com";
            employee.AppendChild(email);
            //显示DataSet中的数据
            Console.WriteLine("姓名:" + ds.Tables[0].Rows[0]["name"]);
            Console.WriteLine("年龄:" + ds.Tables[0].Rows[0]["age"]);
            Console.WriteLine("性别:" + ds.Tables[0].Rows[0]["sex"]);
            Console.WriteLine("email:" + ds.Tables[0].Rows[0]["email"]);

            Console.ReadLine();
        }


 

注意,"ds.EnforceConstrains=false;" 这一行代码用来去掉DataSet类的强制约束规则,否则不能修改数据。

上面代码输出结果为:

姓名:John

年龄:25

性别:male

email:john@hotmail.com

 

 属性:

Attributes:包含节点属性的集合

ChildNodes :包含所有子节点的集合

DataSet:获取XML数据文档对象的DataSet类表现形式

DocumentElement:获取Xml数据文档对象的根XmlElement

等等

        static void ShowEmpData()
        {
            System.IO.StringReader bulider = new System.IO.StringReader("<employee><name>John</name>" +
            "<age>25</age><sex>male</sex><email>john@hotmail.com</email></employee>");
            XmlReader reader = XmlReader.Create(bulider);
            DataSet ds = new DataSet("empdata");
            ds.EnforceConstraints = false;
            ds.ReadXml(reader);
            reader.Close();
            XmlDataDocument datadoc = new XmlDataDocument(ds);
            DataSet getds = datadoc.DataSet;
            //显示XmlDataDocument类实例中DataSet属性的数据
            Console.WriteLine("姓名:" + ds.Tables[0].Rows[0]["name"]);
            Console.WriteLine("年龄:" + ds.Tables[0].Rows[0]["age"]);
            Console.WriteLine("性别:" + ds.Tables[0].Rows[0]["sex"]);
            Console.WriteLine("email:" + ds.Tables[0].Rows[0]["email"]);
        }

上面代码输出结果为:

姓名:John

年龄:25

性别:male

email:john@hotmail.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值