首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

XML DOM深入显出之基础

2013-08-01 
XML DOM深入浅出之基础?????? 二、父、子和同级节点:节点树中的节点彼此之间都有等级关系。?????? 父、子和同

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 />"); } }

?

?

不错不错,楼主很厉害,很有用 不错不错,楼主很厉害,很有用
很长时间都不写了,这都是简单实用的,这是基础,基础掌握的好,才能更好的掌握复杂的 不错不错,楼主很厉害,很有用
很长时间都不写了,这都是简单实用的,这是基础,基础掌握的好,才能更好的掌握复杂的
不错,,如果简单的都掌握不好,更别说复杂的了, 不错不错,楼主很厉害,很有用
很长时间都不写了,这都是简单实用的,这是基础,基础掌握的好,才能更好的掌握复杂的
不错,,如果简单的都掌握不好,更别说复杂的了,
嗯,是的

热点排行