XML DOM深入浅出之基础
?????? 二、父、子和同级节点:节点树中的节点彼此之间都有等级关系。
?????? 父、子和同级节点用于描述这种关系。父节点拥有子节点,位于相同层级上的子节点称为同级节点(兄弟或姐妹)。
?????? 1、在节点树中,顶端的节点成为根节点
?????? 2、根节点之外的每个节点都有一个父节点
?????? 3、节点可以有任何数量的子节点
?????? 4、叶子是没有子节点的节点
?????? 5、同级节点是拥有相同父节点的节点
?????? 三、XML DOM的属性和方法
?????? 一些典型的 XML DOM 属性:
?????? x.nodeName - x 的名称
?????? x.nodeValue - x 的值
?????? x.parentNode - x 的父节点
?????? x.childNodes - x 的子节点
?????? x.attributes - x 的属性节点
?
?????? 一些典型的 XML DOM 方法
?????? x.getElementsByTagName(name) - 获取带有指定标签名称的所有元素
?????? x.appendChild(node) - 向 x 插入子节点
?????? x.removeChild(node) - 从 x 删除子节点?
?????? 注释:在上面的列表中,x 是一个节点对象。
?????? 四、XML DOM的解析
?????? 1、加载并解析XML文件
?
/** * 加载XML文档 */function loadXMLDoc(docName) {try // Internet Explorer{xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // 创建空的微软 XML 文档对象} catch (e) {try // Firefox, Mozilla, Opera, etc.{xmlDoc = document.implementation.createDocument("", "", null); // 创建空的XML文档对象} catch (e) {alert(e.message)}}try {xmlDoc.async = false; // 关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本xmlDoc.load(docName); // 告知解析器加载名为 "books.xml" 的文档return xmlDoc;} catch (e) {alert(e.message)}return (null);}
????? 公用的XML文件如下:
<?xml version="1.0" encoding="UTF-8"?><books><book category="WEB前端"><title low="extjs">EXTJS</title><author>z_xiaofei168</author><year>2013</year></book><book category="WEB前端"><title low="jquery">JQUERY</title><author>z_xiaofei168</author><year>2013</year></book><book category="WEB前端"><title low="jsf">JSF</title><author>z_xiaofei168</author><year>2013</year></book></books>
????? 解析XML文件,这里是用jsp写的案例。
document.write("加载book.xml文件 <br />");xmlDoc = loadXMLDoc("<%=path %>/xml/book.xml");document.write(xmlDoc.getElementsByTagName("title")[0].nodeName+": ");document.write(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue);document.write("<br />");document.write(xmlDoc.getElementsByTagName("author")[0].nodeName+": ");document.write(xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue);document.write("<br />");document.write(xmlDoc.getElementsByTagName("year")[0].nodeName+": ");document.write(xmlDoc.getElementsByTagName("year")[0].childNodes[0].nodeValue);document.write("<br />");
?????? 输出以下内容:
?????????????? 加载book.xml文件
?????????????? title: EXTJS
?????????????? author: z_xiaofei168
?????????????? year: 2013
??????? 2、加载并解析XML字符串
/** * 加载XML字符串 */function loadXMLString(text) {try // Internet Explorer{xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // 创建空的微软 XML 文档对象xmlDoc.async = false; // 关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本xmlDoc.loadXML(text); // 告知解析器加载名为 text 的字符串} catch (e) {try // Firefox, Mozilla, Opera, etc.{parser = new DOMParser(); // 创建一个空的 XML 文档对象xmlDoc = parser.parseFromString(text, "text/xml"); // 告知解析器加载名为text的字符串} catch (e) {alert(e.message)}}return xmlDoc;}
??????? 五、XML DOM节点信息
??????? 节点的属性
???????????? 在 XML 文档对象模型 (DOM) 中,每个节点都是一个对象。
???????????? 对象拥有方法(功能)和属性(关于对象的信息),并可通过 JavaScript 进行访问和操作。
???????????? 三个重要的 XML DOM 节点属性是:
??????????????? nodeName
??????????????? nodeValue
??????????????? nodeType
// 获取元素的值document.write(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue);
????? 输出:EXTJS
// 更改元素的值xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue="Hello World";
????? 输出:Hello World
??????
??????nodeType 属性
?
// 节点长度[不同浏览器是不同的]document.write("节点长度[不同浏览器是不同的]: "+x.length);for (i=0,n=x.length;i<n;i++){ if (x[i].nodeType==1) {//Process only element nodes (type 1) document.write(x[i].nodeName); document.write("<br />"); } }?
?
不错不错,楼主很厉害,很有用 不错不错,楼主很厉害,很有用