1,xml基础
XML的一种可扩展的标记语言,version:文档符合xml1.0规范,encoding:文档字符编辑,
standalone:文档定义是否在一个文件内。
DocumentSource属性:使用字符串来设置xml文档,该属性通常是以声明方式设置,具体方法
是在xml控件的<asp:Xml>标记的开始和结束之间放置文本。
TransformSource:使用指定的xsl转换文件格式化xml文档
DOM:是html和xml文档的编程基础,它采用树形结构将xml文档存储于内存中,同时也定义了
处理执行文档的途径。XmlDocument类实现w3c文档对象模型
在asp.net中创建xml文档的方法:
1,  XmlDocument doc = new XmlDocument();
   string xml="<catalog>"
    +"<cd>"
     +"<name>Empire Burlesque</name>"
     +"<artist>Bob Dylan</artist>"
     +"<country>USA</country>"
     +"<company>Columbia</company>"
     +"<price>10.90</price>"
     +"<year>1985</year>"
    +"</cd>"    
                        + "<name>Greatest Hits</name>"
                        + "<artist>Dolly Parton</artist>"
                        + "<country>USA</country>"
                        + "<company>RCA</company>"
                        + "<price>9.90</price>"
                        + "<year>1982</year>"
                    + "</cd>"
                    + "</catalog>";
            //从指定的字符串加载XML文档
            doc.LoadXml(xml);
            //保存文档
            doc.Save("D://cd.xml");
            Label1.Text = "创建成功";
            myXml.DocumentSource = "D://cd.xml";
 
 2,  XmlDocument doc = new XmlDocument();
        //加入XML的声明
        XmlNode declare = doc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
        doc.AppendChild(declare);
        //加入一个根元素catalog
        XmlElement root = doc.CreateElement("", "catalog", "");
        doc.AppendChild(root);
        //加入cd元素
        XmlElement elem1 = doc.CreateElement("vcd");
        root.AppendChild(elem1);
        //加入name元素,值为Maggie May
        XmlElement node1 = doc.CreateElement("name");
        XmlText name = doc.CreateTextNode("Maggie May");
        node1.AppendChild(name);
        elem1.AppendChild(node1);
        //加入artist,值为Rod Stewart
        XmlElement node2 = doc.CreateElement("artist");
        XmlText artist = doc.CreateTextNode("Rod Stewart");
        node2.AppendChild(artist);
        elem1.AppendChild(node2);
        //加入company元素,值为Pickwick
        XmlElement node3 = doc.CreateElement("company");
        XmlText company = doc.CreateTextNode("Pickwick");
        node3.AppendChild(company);
        elem1.AppendChild(node3);
        //保存
        doc.Save("d:\\vcd.xml");
        //重新打开
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load("d:\\vcd.xml");
        Label1.Text = "创建成功";
        myXml.Document = xmldoc;

2,XmlTextReader和XmlTextWriter
XmlTextReader类读取Xml文档,XmlTextWriter类创建xml文档
1)XmlTextReader读取xml文档:
   XmlTextReader tr=new XmlTextReader(Server.MapPath("vcd.xml"));
   while(tr.Read()){
    switch(tr.NodeType){
     //文档声明
     case XmlNodeType.XmlDeclaration:
      Response.Write(Server.HtmlEncode
("<?"+tr.Name+tr.Value+"?>")+"</br>");
      break;
     //DOCTYPE
     case XmlNodeType.DocumentType:
      Response.Write(Server.HtmlEncode
("<!DOCTYPE"+tr.Name+"["+tr.Value+"]")+"</br>");
      break;
     //元素开始
     case XmlNodeType.Element:
      Response.Write(Server.HtmlEncode
("<"+tr.Name+">")+"</br>");
      break;
     //字符数据
     case XmlNodeType.Text:
      Response.Write(tr.Value+"</br>");
      break;
     //元素结束
     case XmlNodeType.EndElement:
      Response.Write(Server.HtmlEncode
("</"+tr.Name+">")+"</br>");
      break;
     //解释
     case XmlNodeType.Comment:
      Response.Write(Server.HtmlEncode
("<!--"+tr.Value+"--!>")+"</br>");
      break;
     case XmlNodeType.Attribute:
      Response.Write(Server.HtmlEncode
(tr.Name+"="+tr.Value));
      break;
    }
    }
2)用xmlTextWriter写入xml中
            XmlTextWriter writer = new
            XmlTextWriter("d:\\aaa.xml", System.Text.Encoding.UTF8);
        //文档开始
        writer.WriteStartDocument();
        //根元素
        writer.WriteStartElement("users");
        //创建元素infor
        writer.WriteStartElement("infor");
        //为元素infor添加属性
        writer.WriteAttributeString("id", "k001");
        writer.WriteElementString("name", "李华");
        writer.WriteElementString("age", "25");
        writer.WriteElementString("email", " lihua@163.com");
        writer.WriteStartElement("Requestinfor");
        writer.WriteAttributeString("time", DateTime.Now.ToString());
        writer.WriteElementString("Type", Request.RequestType);
        writer.WriteElementString("IP", Request.UserHostAddress);
        writer.WriteEndElement();//结束对Requestinfor节点的添加
        writer.WriteEndElement();//结束对infor节点的添加
        //创建另一个infor元素
        writer.WriteStartElement("infor");
        //为元素infor添加属性
        writer.WriteAttributeString("id", "k002");
        writer.WriteElementString("name", "张忠");
        writer.WriteElementString("age", "30");
        writer.WriteElementString("email", " zhangzhong158@163.com");
        writer.WriteStartElement("Requestinfor");
        writer.WriteAttributeString("time", new DateTime(2007, 5, 20).ToString());
        writer.WriteElementString("Type", Request.RequestType);
        writer.WriteElementString("IP", Request.UserHostAddress.Replace("127",
"129"));
        writer.WriteEndElement();//结束对Requestinfor节点的添加
        writer.WriteEndElement();//结束对infor节点的添加
        writer.WriteEndElement();//结束对users节点的添加
        //文档结束
        writer.WriteEndDocument();
        writer.Close();
3,XML和ADO.NEt
使用GridView绑定xml文档
  DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("vcd.xml"));
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
4,使用DataSet创建xml文档
              DataSet ds=new DataSet();
   DataTable dt=new DataTable("infor");
   //id自动增长
   DataColumn dc=new DataColumn("id");
   dc.DataType=typeof(string);
   dc.AutoIncrement=true; dt.Columns.Add(dc);
   //添加列
   dc=new DataColumn("username",typeof(string));
   //不允许为空
   dc.AllowDBNull=false;
   dt.Columns.Add(dc); dc=new DataColumn("age",typeof
(int));
   //默认值
   dc.DefaultValue=25; dt.Columns.Add(dc);
   //添加行
   DataRow row=dt.NewRow();
   row["username"]="小华"; dt.Rows.Add(row);
   //添加行
   DataRow dr=dt.NewRow();
   dr["username"]="Lucy"; dr["age"]=30;
   dt.Rows.Add(dr);
   //添加表
   ds.Tables.Add(dt); ds.AcceptChanges();
   ds.WriteXml(Server.MapPath
("infor.xml"),XmlWriteMode.WriteSchema);