首先介绍简单的理论:
对于XML,我们可以理解它是一种树结构,它包含根,元素,属性,文本等内容。不同浏览器都有自己的解析器,把XML读入内存,并把它转换为可被 JavaScript 访问的 XML DOM 对象。
微软的 XML 解析器与其他浏览器中的解析器是有差异的。微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都含有遍历 XML 树、访问、插入及删除节点的函数。
如果你使用的是一个本地文件或者网络文件且该文件在是在本服务器,那么对于IE和其他浏览器来说都可以通过load(uRl),loadXML(strXML)来创建Xdom对象。但是对于文本,除IE外需要一个单独的解析器来处理。
以下函数用于根据不同的浏览器来创建Xdom对象:
function loadXMLDoc() { var xmlDoc; // code for IE if (window.ActiveXObject){ xmlDoc=new ActiveXObject("Microsoft.XMLDOM");//创建空的微软 XML 文档对象 //xmlDoc.load(uRl); //loadXML() 方法用于加载字符串(文本),而 load() 用于加载文件 xmlDoc.loadXML(xmlstr); } // code for Mozilla, Firefox, Opera, etc. else if(document.implementation&&document.implementation.createDocument){ xmlDoc=document.implementation.createDocument("","",null); //xmlDoc.load(uRl); //Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象 parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml"); }else{ alert('Your browser cannot handle this script'); } //关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本 xmlDoc.async=false; createTable(xmlDoc); }
方法内有具体的解析,我不再啰嗦,对于解析的内容,分为字符串和文本两种。
首先定义一个字符串:
var xmlstr="<?xml version=\"1.0\" encoding=\"UTF-8\"?><goodss><goods id=\"1\"><name>数码相机</name><price>3206(元)</price></goods><goods id=\"2\"><name>联想笔记本电脑</name><price>3206(元)</price></goods></goodss>";
然后定义一个goods.xml文件:
文件内容为:
<?xml version="1.0" encoding="UTF-8"?> <goodss> <goods id="1"> <name>数码相机</name> <price>3206(元)</price> </goods> <goods id="2"> <name>联想笔记本电脑</name> <price>3206(元)</price> </goods> </goodss>
通过取消和注释方式来选择是文本还是字符串。
这个方法可以是通用的,下面再来解析这个Xdom对象:
function createTable(xmldoc){ var goodss=xmldoc.getElementsByTagName("goods"); for(var i=0;i<goodss.length;i++){ var g=goodss[i]; if (g.nodeType==1){ var name=g.getElementsByTagName("name")[0].childNodes[0].nodeValue; var price=g.getElementsByTagName("price")[0].childNodes[0].nodeValue; var id=g.getAttribute("id"); document.write(id + "-->" + name + "-->" + price); document.write("<br />"); } } }
对于使用到的函数和属性我们来解析一下:
/* 一些典型的 DOM 属性 x.nodeName - x 的名称 x.nodeValue - x 的值 x.parentNode - x 的父节点 x.childNodes - x 的子节点 x.attributes - x 的属性节点 x.firstChild - x 的第一个子节点,等同于childNodes[0] x.lastChild - x 的最后一个子节点 x.data - x 的内容,等同nodeValue x.length - x 的长度 x.nodeType - x 的类型:1,元素,2,属性,3,文本,4,注释,5,文档 在上面的列表中,x 是一个节点对象 XML DOM 方法 x.getElementsByTagName(name) - 获取带有指定标签名称的所有元素,返回的是数组 x.getAttribute(name) - 返回属性的值 */ /*出于安全方面的原因,现代的浏览器不允许跨域的访问。 这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。 否则,xmlDoc.load() 将产生错误 "Access is denied"。 */
早页面增加一个按钮来调用函数:
<input type="button" name="bxml" value="Read" onclick="loadXMLDoc()" />
页面将会输出XMl内节点的属性和子节点的内容。对于一般应用来说,我觉得上面内容已经足够了。我会在之后补充一些其他操作。
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com
相关推荐
不同浏览器都有自己的解析器,把XML读入内存,并把它转换为可被 JavaScript 访问的 XML DOM 对象。 微软的 XML 解析器与其他浏览器中的解析器是有差异的。微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,...
兼容各种浏览器,解析xpath解析xml文档
本文实例讲述了JS实现的跨浏览器解析XML文件的方法。分享给大家供大家参考,具体如下: 下列代码把一个 XML 文档 (“note.xml”) 载入 XML 解析器中: [removed] function GetXmlHttpObject() { var xmlHttp=null;...
JS解析XML适用于不用的浏览器JS解析XML适用于不用的浏览器
主要介绍了JS实现兼容各浏览器解析XML文档数据的方法,涉及javascript对XML文件的解析技巧,并根据各浏览器进行了相关调整,具有良好的兼容性,需要的朋友可以参考下
本人,以前也遇到各浏览器XML的兼容问题,然后改用Json解决了兼容问题,今天突然间有一个想法又重拾XML,终于完美解决
用js解析xml,获得xml中的内容在html网页中显示,用层布局,用cookie做记录边框颜色,浏览器为ie和FireFox浏览器,这是学习css样式,层布局,js,js解析xml的基础,易学
javascript解析xml方法,考虑多种浏览器
JS解析XML文件 [removed] loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览器的类型 //支持IE浏览器 if(!window.DOMParser && window.ActiveXObject){ var xmlDomVersions = ['MSXML.2.DOMDocument.6.0',...
city.xml(完整版) 博文链接:https://javawangli.iteye.com/blog/970929
解析XML 适用于Node.js和浏览器的快速,安全,兼容的XML解析器。 内容 安装 npm install @rgrove/parse-xml 或者,如果您喜欢危险的生活,则可以通过加载浏览器中,并使用parseXml全局。 产品特点 返回表示XML文档...
由于项目上需要解析xml,于是各种百度,然后自己总结了下各个主流浏览器解析xml的方法,只能是很浅显的知道他的用法,但是还没有深层次的研究。 不同的浏览器对xml的解析方式不同,根据目前主流浏览器大致分三类: ...
osm-read, openstreetmap XML和PBF数据分析器 for node.js 和浏览器 使用函数和浏览器的PBF解析器 read介绍用法示例简单用法示例从URL示例解析 OSM XMLPBF随机访问分析器版本升级指南合并许可证联系人简介osm读取...
就是让JavaScript使用一个XML解析器来进行转换。但是当浏览器不支持XML解析 器时,这种方法是不奏效的。要使XML数据对所有浏览器都可用,我们就必须在服 务器上转换XML文档,并将它作为纯HTML发送到浏览器。 这是...
之前写过一篇 《使用jquery解析XML的方法》链接是//www.jb51.net/article/54842.htm,上篇文章详细解释了jQuery 与字符串互相转换的方法 ,这里着重论述javascript操作xml。 总代码如下: var XMLHttp = null; if ...
软X路径SoftXPath是一个小型的跨浏览器 JavaScript 库,用于使用强大的Xpath表达式在客户端解析复杂的 XML 文档。 专注于构建有效的 Xpath 表达式,而不是在浏览器兼容性问题上浪费时间。支持的浏览器:SoftXPath ...
验证XML,将XML解析为JS / JSON,反之亦然,或者快速将XML解析为Nimn,而无需基于C / C ++的库且没有回调 为了支付费用,我们计划并行发布版。 如有兴趣,请观看它以获取进一步的更新。 用户数 使用快速XML解析器的...
但是是XML字符串,则在两种浏览器下就会有所不同,IE下可以直接使用LoadXML方法解析XML字符串,而在FF下则要使用DOMParser 对象的parseFromString() 方法即 var oParser=new DOMParser(); xmlDoc=oParser....