XML

使用XML空间读取XML文件
(1)DocumentSource和TransformSource属性
Document:该属性表示使用XmlDocument对象来设置XML文档。
DocumentContent:使用字符串来设置XML文档,该属性通常是以声明方式设置,具体方法是在XML控件的<asp:Xml>标记的开始和结束之间放置文本。
DocumentSource:该属性使用文件来设置XML文档。
Transform:使用指定的XslTransform类对象格式化XML文档。
TransformSource:使用指定的XSL转换文件格式化XML文档。
XmlDocument xd = new XmlDocument();//创建XmlDocument对象
 xd.Load(Server.MapPath("XMLFile.xml"));加载指定的XML数据
在ASP.NET中,XmlDocument类实现W3C文档对象模型(DOM),该类的常用方法如下:
AppendChild():将指定的节点添加到该节点的子节点列表的末尾。
 Clone():创建此节点的一个副本。
 CreateAttribute():创建具有指定名称的XmlAttribute对象。
 CreateComment():创建包含指定数据的XmlComment对象。
 CreateDocumentType():返回新的XmlDocumentType对象。
 CreateElement():创建元素。
 CreateNode():创建指定类型的节点,如创建文档声明等。
 CreateTextNode():创建具有指定文本的XmlText。
 Equals():确定两个Object实例是否相等。
Save():将XML文档保存到指定的位置。
Load():加载指定的XML数据

使用XmlDocument类解析XML文档

使用该类对文档进行解析,一般步骤如下:
1)通过XML文档创建DOM树。
2)遍历元素(根元素的下级节点),获取该元素的属性、字符数据和所有子节点等。
3)遍历子节点,获取元素的属性和字符数据,如果该节点还有子节点,获取所有子节点,然后重复第三步,直到遍历完该文档的所有节点为止。
//遍历节点元素
   XmlNodeList list=doc.GetElementsByTagName("friend");
   for(int i=0;i<list.Count;i++)
   {
    XmlNode node=list.Item(i);
    //获取friend元素的属性
    XmlNode attr=node.Attributes.Item(0);
    str+=attr.Name+"="+attr.FirstChild.InnerText+"</br>";
    //遍历friend元素的子元素
    XmlNodeList l=node.ChildNodes;
    for(int j=0;j<l.Count;j++)
    {
     XmlNode n=l.Item(j);
     //获取元素标记和字符数据
     str+=n.Name+":"+n.FirstChild.InnerText+"</br>";
    }
    str+="</p>";
   }
   Label1.Text=str;

使用XmlDocument类创建XML文档
1)使用LoadXml(string xml)方法和Save(string fileName)方法,即将文档中的内容以字符串的形式作为LoadXml(string xml)方法的参数,从该字符串加载到XML文档,然后调用该类的Save(string fileName)方法将其保存到文件中
2)按照XML的结构一步一步的构建XML文档。首先创建一个空的XML文档,即创建该类的对象;然后在该XML的文档的最头部加入XML的声明段落,通过该类中的CreateNode()方法创建;最后是为XML文档加入元素和属性等。
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");
XmlTextReader类读取XML文档
 XmlTextReader tr = new XmlTextReader(Server.MapPath("XMLFile.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 + ">") );
                    break;
                //字符数据
                case XmlNodeType.Text:
                    Response.Write(tr.Value  );
                    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;
            }
XmlTextWriter类创建XML文档
 XmlTextWriter writer = new
       XmlTextWriter(Server.MapPath("~") + "\\2.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", "[email protected]" );
        writer.WriteStartElement("Requestinfor" );
        writer.WriteAttributeString("time", DateTime.Now.ToString() );
        writer.WriteElementString("Type", Request.RequestType );
        writer.WriteElementString("IP", Request.UserHostAddress );
        writer.WriteEndElement();
        writer.WriteEndElement();
        writer.WriteEndElement();
        //文档结束
        writer.WriteEndDocument();
        writer.Close();
在ADO.NET组件中DataSet是其核心组件之一,它提供了独立于数据源的数据访问功能。为了实现这种平台互用性和可伸缩的数据访问,ADO.NET采用了基于XML的数据传输格式,XML在这里充当了至关重要的角色。DataSet可将数据和架构作为XML文档进行读写,当数据传输时,ADO.NET是将DataSet表述为XML,然后以XML格式传递给其它组件。例如:
DataSet ds = new DataSet();
  ds.ReadXml(Server.MapPath("AddressList.xml"));
  dg.DataSource = ds.Tables[0].DefaultView;
  dg.DataBind();
另外,DataSet数据集支持的最直接的XML方法就是GetXml() 和GetXmlSchema()了,该方法只将XML数据或XSD架构作为一个字符串值返回,核心代码如下所示:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("Order.xml"));
ds.ReadXmlSchema(Server.MapPath("Order.xsd"));
Response.Write(ds.GetXml());
Response.Write(ds.GetXmlSchema());
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章