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());
 

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