XmlDataDocument

来源:互联网 发布:gta53md针对笔记本优化 编辑:程序博客网 时间:2024/05/18 03:57

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

 

原创粉丝点击