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 < 1000 then</message>
7. 在 XML 中,有 5 个预定义的实体引用: < < 小于 ; > > 大于 ; & & 和号 ; ' ' 单引号 ; " " 引号 ;
三.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增删改查类
转载于:https://www.cnblogs.com/qi-dian-ao/p/8470732.html
相关资源:XML初步到精通.zip