《DotNet框架中的XML.ppt》由会员分享,可在线阅读,更多相关《DotNet框架中的XML.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.NET中的中的XMLDataSet与与XML /XML序列化序列化教学目标教学目标掌握掌握2.0中操作中操作xml掌握掌握XML序列化序列化2.0中操作xml1.使用XML控件 注意:为XML控件配置DocumentSourse属性 2.0中操作xml2.使用DataSet读取xml文件 周润发 男 演员 谭浩强 男 教师 易中天 男 教师 2.0中操作xmlDataSet objDataSet=new DataSet();objDataSet.ReadXml(Server.MapPath(XMLFileDemo.xml);GridView1.DataSource=objDataSet.Ta
2、bles“”.DefaultView;GridView1.DataBind();2.0中操作xml效果2.0中操作xml3.使用DataSet创建XML文件在Default.aspx视图编辑页面添加一个Button控件 如图双击Button控件在其Button1_Click方法中添加如下代码:DataSet myds=new DataSet();DataTable mydt=new DataTable(Squares);DataRow mydr;mydt.Columns.Add(new DataColumn(数字,typeof(Int32);mydt.Columns.Add(new DataC
3、olumn(平方,typeof(Int32);/定义主键mydt.PrimaryKey=new DataColumn mydt.Columns数字;for(int i=0;i 5;i+)mydr=mydt.NewRow();mydr0=i;mydr1=i*i;mydt.Rows.Add(mydr);myds.Tables.Add(mydt);myds.WriteXml(Server.MapPath(Squares.xml);XML序列化序列化1.序列化的概念:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数
4、据。XML序列化序列化2序列化的应用目的一个原因是将对象的状态永久保存在存储媒体中,以便可以在以后重新创建精确的副本;另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。3.XML 序列化。XML 序列化中最主要的类是 XmlSerializer 类,它的最重要的方法是 Serialize 和 Deserialize 方法。XML序列化序列化使用 XmLSerializer 类可将下列项序列化:公共类的公共读/写属性和字段实现 ICollection 或 IEnumerable 的类XmlElement 对象XmlNode 对象DataSet 对象XML序列化序列化序列化对象:要
5、序列化对象,首先创建要序列化的对象并设置它的公共属性和字段。using System;using System.Collections.Generic;using System.Text;using System.Xml.Serialization;/此命名空间包含用于将对象序列化为XML 格式文档或流的类。using System.IO;/此命名空间包含操作文件和流的类namespace XmlTest /定义一个类MySerializableClass public class MySerializableClass /公共字段 public string strName;public i
6、nt iAge;XML序列化序列化续class Class1 /在这里我们将MySerializableClass的对象序列化 static void Main()MySerializableClass myObject=new MySerializableClass();myObject.strName=张三;myObject.iAge=21;/使用myObject的类型创建XmlSerializer对象mySerializer XmlSerializer mySerializer=new XmlSerializer(typeof(MySerializableClass);/创建一个Stre
7、amWriter对象 StreamWriter myWriter=new StreamWriter(myFileName.xml);/调用Serialize方法将对象序列化 写入XML文件中 mySerializer.Serialize(myWriter,myObject);myWriter.Close();myFileName.xml 的内容的内容 张三张三 21XML序列化序列化将对象反序列化:当您反序列化对象时,传输格式确定您将创建流还是文件对象。确定了传输格式之后,就可以根据需要调用 Serialize 或 Deserialize 方法。/反序列化 MySerializableClas
8、s myObject;/使用对象myObject的类型创建XmlSerializer对象mySerializer XmlSerializer mySerializer=new XmlSerializer(typeof(MySerializableClass);/创建一个文件流来读取XML文件 FileStream myFileStream=new FileStream(myFileName.xml,FileMode.Open);/调用Deserialize方法将对象反序列化 myObject=(MySerializableClass)mySerializer.Deserialize(myFil
9、eStream);Console.WriteLine(iAge:0,myObject.iAge);Console.WriteLine(strName:0,myObject.strName);XML序列化序列化序列化数据集DataSetprivate void SerializeDataSet(string filename)XmlSerializer ser=new XmlSerializer(typeof(DataSet);/创建一个DataSet对象它拥有一个列一行的DataTable DataSet ds=new DataSet(myDataSet);DataTable t=new Da
10、taTable(table1);DataColumn c=new DataColumn(thing);t.Columns.Add(c);ds.Tables.Add(t);DataRow r;for(int i=0;i 10;i+)r=t.NewRow();r0=Thing +i;t.Rows.Add(r);TextWriter writer=new StreamWriter(filename);ser.Serialize(writer,ds);writer.Close();XML序列化序列化序列化 XmlElement 和 XmlNodeprivate void SerializeElemen
11、t(string filename)/序列化XMLElement XmlSerializer ser=new XmlSerializer(typeof(XmlElement);XmlElement myElement=new XmlDocument().CreateElement(MyElement,ns);myElement.InnerText=Hello World;TextWriter writer=new StreamWriter(filename);ser.Serialize(writer,myElement);writer.Close();XML序列化序列化 private void SerializeNode(string filename)/序列化 XmlNode XmlSerializer ser=new XmlSerializer(typeof(XmlNode);XmlNode myNode=new XmlDocument().CreateNode(XmlNodeType.Element,MyNode,ns);myNode.InnerText=Hello Node;TextWriter writer=new StreamWriter(filename);ser.Serialize(writer,myNode);writer.Close();小结
限制150内