JavaScript遍历XML总结
1:读取服务器端xml(注意不同浏览器版本的区别),使用XML可以增强系统的扩展性,只用修改XML就可以实现增加减少功能的目的。
function loadXMLDoc1(dname){ if (window.XMLHttpRequest){ xhttp=new XMLHttpRequest(); }else{ xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); xhttp.send(""); return xhttp.responseXML;} |
2:遍历XML节点
2.1:getElementsByTagName() 方法可以在取得一个节点后继续调用获得子节点,并且返回的是一个数组(只有一个节点时也要加上[0])
2.2:.childNodes[0].nodeValue) 取得一个节点的值的办法,节点的值也是节点(文本节点)
function test() var xml=loadXMLDoc1("book.xml"); var bookss=xml.getElementsByTagName("book"); for(var i=0;i<bookss.length;i++) document.write(bookss[i].getElementsByTagName("title")[0].childNodes[0].nodeValue); document.write("</br>"); document.write(bookss[i].getElementsByTagName("author")[0].childNodes[0].nodeValue); document.write("</br>"); document.write(bookss[i].getElementsByTagName("year")[0].childNodes[0].nodeValue); document.write("</br>"); document.write(bookss[i].getElementsByTagName("price")[0].childNodes[0].nodeValue); document.write("</br>"); }} |
3:CDATA节点值读取
3.1:如果一个XML节点中是CDATA,读取时不同浏览器的方法不同,在IE下nodeValue可以正常获取到值,在FF和chrome下通过wholeText读取。
3.2:如果一个节点浏览器不支持,可以使用if进行判断。
function testCDATA() var xml=loadXMLDoc1("ceshi.xml"); var HightChartsOpinions=xml.getElementsByTagName("HightChartsOpinions"); for(var i=0;i<HightChartsOpinions.length;i++) var wholeTextData=HightChartsOpinions[i].childNodes[0].wholeText; var text=wholeTextData?wholeTextData:HightChartsOpinions[i].childNodes[0].nodeValue document.write(text); document.write("</br>"); } return false;} |
4: 通过XPATH进行XML的遍历
4.1:XPATH可以非常强大的进行XML节点的过滤,以下的链接中包含了常用的xpath用法。
http://www.w3school.com.cn/xpath/xpath_examples.asp
4.2:xpath读取xml 不同浏览器也有不同的方法实现,这里使用回调函数处理返回节点。
function xpath() var xmlFilePath="book.xml"; var xpath="/bookstore/book[price>45]"; var callback=function(element) document.write(element.getElementsByTagName("title")[0].childNodes[0].nodeValue); document.write("</br>"); document.write(element.getElementsByTagName("author")[0].childNodes[0].nodeValue); document.write("</br>"); document.write(element.getElementsByTagName("year")[0].childNodes[0].nodeValue); document.write("</br>"); document.write(element.getElementsByTagName("price")[0].childNodes[0].nodeValue); document.write("</br>"); }; handlerXML(xmlFilePath,xpath,callback);}function handlerXML(xmlFilePath,xpath,callback) var xml=loadXMLDoc1(xmlFilePath); var action; if (window.ActiveXObject) { var nodes=xml.selectNodes(xpath); for (i=0;i<nodes.length;i++){ callback(nodes[i]); } }else if (document.implementation var nodes=xml.evaluate(xpath,null,null); var result=nodes.iterateNext(); while (result){ callback(result); result=nodes.iterateNext(); } }} |
JavaScript遍历XML总结的更多相关文章
- JavaScript操作XML
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...
- XML DOM 遍历Xml文档
1.xml文档内容: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <b ...
- JavaScript操作XML(二)
上一篇介绍了XML的结构以及节点之间的关系这一篇介绍浏览器内建的XML解析器以及JavaScript是如何加载XML的. 大多数浏览器都有读取和操作 XML 的内建 XML 解析器. 解析器(XML ...
- JavaScript操作XML工作记录
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...
- ajax-异步JavaScript和XML
什么是ajax? ajax是异步的javascript和XML ( Asynchronous Javascript And XML ) 优点:节省用户操作时间,提高用户体验.减少数据请求次数. 什么是 ...
- C#遍历XML文件动态加载菜单
通过遍历XML文件动态加载菜单,顺便利用WebBrowser控件实现一个简单的桌面浏览器 效果如下: 代码如下: XMLFile1.xml <?xml version="1.0&quo ...
- 18. javacript高级程序设计-JavaScript与XML
1. JavaScript与XML IE采取了下列方式: l 通过ActiveX对象来支持处理XML,而相同的对象也可以用来构建桌面应用程序 l Windows携带了MSXML库,JavaScript ...
- [VBS]遍历XML文档
一.脚本源码 使用VBS脚本遍历XML文件 Option Explicit '定义常量 '元素 '文本 'CDATA '实体引用 '实体 '处理指令 '注释 '文档类型 '遍历文件 NameList. ...
- JavaScript遍历table的行和列
来源:http://blog.csdn.net/bobwu/article/details/7497412 <HTML> <head> <SCRIPT LANGUAGE= ...
随机推荐
- iOS 南京互联网大会分享及个人见解 韩俊强的博客
首先分两大块: 1.如何打造高效/稳定的App (重点): 2.软件自动化测试: 每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 每日更新关注:http://we ...
- [EXtJS5学习笔记]第一节 Sencha Cmd 学习笔记 简介 Sencha Cmd是什么
本文地址: http://blog.csdn.net/sushengmiyan/article/details/38295575 本文作者:sushengmiyan ----------------- ...
- J2EE进阶(五)Spring在web.xml中的配置
J2EE进阶(五)Spring在web.xml中的配置 前言 在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制自动加载到容器中.在web ...
- const引用
在C++中可以声明const引用 const Type& name = var: const引用让变量拥有只读属性 const int &a = b const int &a ...
- MVPHelper更新日志 --- 新增常规分包模式
MVPHelper是一款可以自动生成MVP接口以及实现类的android studio插件,彻底解放双手! MVPHelper更新版本啦. 由于之前只支持contract模式,不是很符合大众口味 所以 ...
- 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...
- Mybatis执行CachingExecutor(六)
前面几篇博客我们介绍了Excutor及抽象类BaseExecutor和实现类SimpleExecutor.BatchExecutor和ReuseExecutor: 博客列表: Mybatis执行Exe ...
- Ajax数据返回格式问题解决
Ajax数据返回格式问题解决 服务端返回的数据格式为: response.setContentType("text/xml;charset=utf-8"); 设置发送到客户端的响应 ...
- [WinForm]C# .net防止一个程序(WinForm)重复运行的方法。
最近比较忙,邮件预警系统暂停了没时间去处理,临时处理:直接执行exe文件! 可是问题来了: 我点击了两次,原来几乎在同时执行这个进程,我在程序中有线程时间睡眠2秒一次等待队列,打开进程果然两个MAIL ...
- vim的modeline
vim的modeline可以让你针对每个文件进行文件级别的设置,这些设置是覆盖当前用户的vimrc中的设置的.vim默认关闭modeline,开启的话需要在你的home下的.vimrc文件中增加一行: ...