xml 總結


xml初步學習。


一. xml是被設計用來傳輸和存儲數據,不用來做任何行為,或表現。

二. xml語法類似html語法,但是有幾點不同,我將其列舉出來。

         1.xml標簽必須是封閉的      <p>....</p>對       <p>....錯

         2.xml標簽對大小寫敏感      <name>....</name> 對       <Name>....</name>錯

         3.xml必須正確嵌套            <p><h>.....</h></p>對       <p><h>.....</p></h>錯

         4.xml文檔必須有根元素      <root><p>...</p><name>...</name></root>

         5.xml的屬性值必須加引號   <note date="08/08/2008">.....</note>

         6.如果你把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。 <message>if salary &lt; 1000 then</message>

         7. 在 XML 中,有 5 個預定義的實體引用:  &lt; < 小於 ;  &gt; > 大於  ;   &amp; & 和號  ;  &apos; ' 單引號   ;  &quot; " 引號  ;

三.xml一些語法規范。

         1.xml中的注釋       <!-- This is a comment -->

         2. 在xml中空格會被保留

         3.xml標簽命名規則 不能以標點符號開始,不能以空格,xml(XML/Xml/XMl...)任何形式開始。

         4.xml標簽中盡量避免屬性的使用。



JavaScript讀取xml文件。


 

<script type="text/javascript">
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }

//      xmlhttp的send是傳遞參數用的,但是只有在使用post方式提交請求的時候才有用,這是ajax的基礎知識
//      如下:
//      xmlhttp.open("post",url,true);  
//      ...
//      xmlhttp.send("data=data&data2=data2");
// 
//      用get的話一般就是:
//      xmlhttp.open("get",url,true);  
//      ...
//      xmlhttp.send(null);   

      xmlhttp.open("get","XMLFile1.xml",false);  //      XMLFile1.xml為要讀取的xml文件路徑
      xmlhttp.send();          
      xmlDoc=xmlhttp.responseXML;   //xml為返回文檔
      
      x=xmlDoc.getElementsByTagName("CD");   //獲取節點為CD的xml文檔 
      var str="";
      for(i=0;i<x.length;i++)
      {
        str+=x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
      }
    document.write(str);
</script>

 JavaScript操作xml文件。


 

    <script src="js/loadXMLDoc.js" type="text/javascript"></script>  <!--這個js w3school上面有只有一個方法-->
    <script type="text/javascript">
       if(window.XMLHttpRequest)
       {
          xmlhttp=new XMLHttpRequest();
       }
       else
       {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
       xmlhttp.open("get","XMLFile1.xml",false);
       xmlhttp.send();
       xmlDoc=xmlhttp.responseXML;
       
       x=xmlDoc.getElementsByTagName("CD");
       var str="";
       //改變節點值,屬性
       x[0].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue="2b";   //改變節點值
       x[0].getElementsByTagName("TITLE")[0].setAttribute("name","456");    //改變節點屬性值
       x[0].getElementsByTagName("ARTIST")[0].getAttributeNode("name").nodeValue="789";  //改變節點屬性的值
       
       
       //刪除節點值,屬性
       var pn=x[0].getElementsByTagName("TITLE").length;  //刪除前第一個CD節點中title節點的個數
       y=x[0].getElementsByTagName("TITLE")[1];
       x[0].removeChild(y);  //刪除節點
       x[0].parentNode.removeChild(x[0]);  //刪除自身節點
       x[0].getElementsByTagName("TITLE")[0].removeAttribute("name");  //刪除節點屬性
       var Ln=x[0].getElementsByTagName("TITLE").length;  //刪除后第一個CD節點中title節點的個數
       
       
       //替換節點
       x[0].getElementsByTagName("TITLE")[0].childNodes[0].replaceData(0,2,"123")  //把節點的前兩個字符替換為"123"
       //創建一個 book 元素、一個 title 元素,以及一個 text 節點
       newNode=xmlDoc.createElement("TITLE");
       newTitle=xmlDoc.createElement("NAME");
       newText=xmlDoc.createTextNode("Hello World");
       //向 title 節點添加文本節點
       newTitle.appendChild(newText);
       //向 book 節點添加 title 節點
       newNode.appendChild(newTitle);
       y=x[0].getElementsByTagName("TITLE")[0];
       //用這個新節點替換第一個 book 節點
       x[0].replaceChild(newNode,y);    
       

       //獲取節點值,屬性
       str=x[0].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue;     //獲取節點值
       str+="---------"+x[0].getElementsByTagName("TITLE")[0].getAttribute("name");  //獲取屬性值
       str+="---------"+x[0].getElementsByTagName("TITLE")[0].getAttributeNode("name").nodeValue;   //獲取屬性值
       str+="---------"+x[0].getElementsByTagName("ARTIST")[0].getAttribute("name");
       
       function aa(){           
            alert(str+"---刪除前: "+pn+"-----刪除后: "+Ln);
       }
    </script>

c#操作xml文件。


 

using System.Xml;

namespace xml初探
{
    public partial class Cshap操作xml : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(@"G:\xincaifu\asp.net技術點測試\xml初探\books.xml");
            XmlElement theBook = null, theElem = null, root = null;
            root = xmldoc.DocumentElement;


            //創建新建一個CD
            theBook = xmldoc.CreateElement("book");

            theElem = xmldoc.CreateElement("name");
            theElem.InnerText = "新書";
            theBook.AppendChild(theElem);

            theElem = xmldoc.CreateElement("price");
            theElem.InnerText = "20";
            theBook.AppendChild(theElem);

            theElem = xmldoc.CreateElement("memo");
            theElem.InnerText = "新書更好看。";
            theBook.AppendChild(theElem);

            root.AppendChild(theBook);

            Response.Write("---  新建一本書開始 ----");
            Response.Write(root.OuterXml+"</BR>");

            //---  新建一本書完成 ----

            //---  下面對《哈里波特》做一些修改。 ----
            //---  查詢找《哈里波特》----
            theBook = (XmlElement)root.SelectSingleNode("/books/book[name='哈里波特']");
            Response.Write("---  查找《哈里波特》 ----");
            Response.Write(theBook.OuterXml);

            //---  此時修改這本書的價格 -----
            theBook.GetElementsByTagName("price").Item(0).InnerText = "15";//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,GetElementsByTagName("price")相當於SelectNodes(".//price")。
            Response.Write("---  此時修改這本書的價格 ----");
            Response.Write(theBook.OuterXml);

            //---  另外還想加一個屬性id,值為B01 ----
            theBook.SetAttribute("id", "B01");
            Response.Write("---  另外還想加一個屬性id,值為B01 ----");
            Response.Write(theBook.OuterXml);
            //---  對《哈里波特》修改完成。 ----

            //---  再將所有價格低於10的書刪除  ----
            theBook = (XmlElement)root.SelectSingleNode("/books/book[@id='B02']");
            Response.Write("---  要用id屬性刪除《三國演義》這本書 ----");
            Response.Write(theBook.OuterXml);
            theBook.ParentNode.RemoveChild(theBook);
            Response.Write("---  刪除后的XML ----");
            Response.Write(xmldoc.OuterXml);

            //---  再將所有價格低於10的書刪除  ----
            XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]");
            Response.Write("---  再將所有價格低於10的書刪除  ---");
            Response.Write("---  符合條件的書有 " + someBooks.Count + "本。  ---");

            for (int i = 0; i < someBooks.Count; i++)
            {
                someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i));
            }
            Response.Write("---  刪除后的XML ----");
            Response.Write(xmldoc.OuterXml);

            xmldoc.Save(@"G:\xincaifu\asp.net技術點測試\xml初探\XMLFile2.xml");//保存到XMLFile2.xml


        }
    }
}

 


C#操作xml增刪改查類


using System.Xml;

namespace PuTianCheng
{
    /// <summary>
    /// XmlHelper 的摘要說明
    /// </summary>
    public class XmlHelper
    {
        public XmlHelper()
        {
        }

        /// <summary>
        /// 讀取數據
        /// </summary>
        /// <param name="path">路徑</param>
        /// <param name="node">節點</param>
        /// <param name="attribute">屬性名,非空時返回該屬性值,否則返回串聯值</param>
        /// <returns>string</returns>
        /**************************************************
         * 使用示列:
         * XmlHelper.Read(path, "/Node", "")
         * XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
         ************************************************/
        public static string Read(string path, string node, string attribute)
        {
            string value = "";
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
            }
            catch { }
            return value;
        }

        /// <summary>
        /// 插入數據
        /// </summary>
        /// <param name="path">路徑</param>
        /// <param name="node">節點</param>
        /// <param name="element">元素名,非空時插入新元素,否則在該元素中插入屬性</param>
        /// <param name="attribute">屬性名,非空時插入該元素屬性值,否則插入元素值</param>
        /// <param name="value"></param>
        /// <returns></returns>
        /**************************************************
         * 使用示列:
         * XmlHelper.Insert(path, "/Node", "Element", "", "Value")
         * XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value")
         * XmlHelper.Insert(path, "/Node", "", "Attribute", "Value")
         ************************************************/
        public static void Insert(string path, string node, string element, string attribute, string value)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                if (element.Equals(""))
                {
                    if (!attribute.Equals(""))
                    {
                        XmlElement xe = (XmlElement)xn;
                        xe.SetAttribute(attribute, value);
                    }
                }
                else
                {
                    XmlElement xe = doc.CreateElement(element);
                    if (attribute.Equals(""))
                        xe.InnerText = value;
                    else
                        xe.SetAttribute(attribute, value);
                    xn.AppendChild(xe);
                }
                doc.Save(path);
            }
            catch { }
        }

        /// <summary>
        /// 修改數據
        /// </summary>
        /// <param name="path">路徑</param>
        /// <param name="node">節點</param>
        /// <param name="attribute">屬性名,非空時修改該節點屬性值,否則修改節點值</param>
        /// <param name="value"></param>
        /// <returns></returns>
        /**************************************************
         * 使用示列:
         * XmlHelper.Insert(path, "/Node", "", "Value")
         * XmlHelper.Insert(path, "/Node", "Attribute", "Value")
         ************************************************/
        public static void Update(string path, string node, string attribute, string value)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                XmlElement xe = (XmlElement)xn;
                if (attribute.Equals(""))
                    xe.InnerText = value;
                else
                    xe.SetAttribute(attribute, value);
                doc.Save(path);
            }
            catch { }
        }

        /// <summary>
        /// 刪除數據
        /// </summary>
        /// <param name="path">路徑</param>
        /// <param name="node">節點</param>
        /// <param name="attribute">屬性名,非空時刪除該節點屬性值,否則刪除節點值</param>
        /// <param name="value"></param>
        /// <returns></returns>
        /**************************************************
         * 使用示列:
         * XmlHelper.Delete(path, "/Node", "")
         * XmlHelper.Delete(path, "/Node", "Attribute")
         ************************************************/
        public static void Delete(string path, string node, string attribute)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                XmlElement xe = (XmlElement)xn;
                if (attribute.Equals(""))
                    xn.ParentNode.RemoveChild(xn);
                else
                    xe.RemoveAttribute(attribute);
                doc.Save(path);
            }
            catch { }
        }
    }
}

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM