zoukankan      html  css  js  c++  java
  • 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 { }
            }
        }
    }
  • 相关阅读:
    LA 6439 Pasti Pas! Hash
    HDU 1067 Gap BFS+Hash
    POJ 3474 Gold Balanced Lineup Hash
    ZOJ 3802 Easy 2048 Again 状压DP
    Hihocoder #1044 状态压缩·一
    HDU 2522 & AOJ 441 & AOJ 364 关于小数和分数的转换
    HDU 2549 Sumset Hash+枚举
    POJ 1840 Eqs Hash + 中途相遇法
    HDU 2128 Tempter of the Bone II BFS
    POJ 3686 & 拆点&KM
  • 原文地址:https://www.cnblogs.com/knowledgesea/p/2565387.html
Copyright © 2011-2022 走看看