`
cuisuqiang
  • 浏览: 3954524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3665466
社区版块
存档分类
最新评论

JS跨浏览器解析XML应用

    博客分类:
  • JS
阅读更多

首先介绍简单的理论:

对于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

 

1
0
分享到:
评论

相关推荐

    JS跨浏览器解析XML应用过程详解

    不同浏览器都有自己的解析器,把XML读入内存,并把它转换为可被 JavaScript 访问的 XML DOM 对象。 微软的 XML 解析器与其他浏览器中的解析器是有差异的。微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,...

    兼容浏览器的解析xml的js代码

    在JavaScript中,解析XML文档并使用XPath进行查询是一项常见的任务,尤其在开发跨浏览器的Web应用时,确保代码兼容性尤为重要。XPath是一种在XML文档中查找信息的语言,它允许我们根据节点的名称、属性、值或其他...

    js解析XML文件

    JS 解析 XML 文件 作为一名 IT 行业大师,我将从给定的...使用 JavaScript 解析 XML 文件需要了解 XML 文档的结构和各个节点的类型,选择合适的解析方法,考虑浏览器兼容性问题,并掌握相关的 JavaScript 语法和方法。

    JS实现的跨浏览器解析XML文件实例

    ### JavaScript跨浏览器解析XML文件的方法 #### XMLHttpRequest与ActiveXObject对象 在不同的浏览器中,XML文件的加载和解析主要依赖于两个对象:`XMLHttpRequest`和`ActiveXObject`。`XMLHttpRequest`是W3C推荐的...

    JS解析XML适用于不用的浏览器

    在JavaScript(JS)中解析XML(可扩展标记语言)是一项常见的任务,特别是在处理与服务器交换数据的Web应用程序中。XML是一种结构化数据格式,广泛用于存储和传输信息。然而,不同的浏览器可能支持不同的方法来解析...

    js的XML解析器 可以解析XMl文件和XML字符串

    JavaScript中的XML解析器是用于处理XML数据的关键工具,它允许开发者在浏览器环境中解析XML文档或者XML字符串,从而在Web应用中有效地使用这些数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于...

    js-xml.rar_javascript_javascript xml_js xml_js解析xml_xml js

    下面将详细探讨JavaScript解析XML的相关知识点。 1. DOM解析XML: 在JavaScript中,XML文档可以通过DOM(Document Object Model)接口来解析。DOM是一种标准,允许程序和脚本动态更新、添加和删除HTML或XML文档的...

    JS实现兼容各浏览器解析XML文档数据的方法

    在JS实现兼容各浏览器解析XML文档数据的方法中,首先介绍了一种使用JavaScript解析XML文档的方法。JavaScript是浏览器内置的脚本语言,它可以直接操作DOM,因此可以用来解析XML文档。具体做法是,首先使用...

    Javascript解析服务器端XML文件

    本文将深入探讨如何使用JavaScript在服务器端解析XML文件,并将其转化为树形菜单,以供用户交互。 首先,理解XML的基本结构至关重要。XML是一种自描述性的文本格式,通过标签来定义数据结构。例如: ```xml ...

    js跨浏览器是正对目前各浏览器标准不同

    JavaScript(JS)是一种广泛应用于网页和网络应用的编程语言,其跨浏览器兼容性问题一直是开发者面临的挑战。由于各个浏览器在实现JavaScript标准时可能存在差异,因此理解并解决这些差异是提高用户体验和确保代码...

    js解析xml文件的完整代码

    在JavaScript中解析XML文件是一项常见的任务,特别是在处理服务器返回的数据或者构建富客户端应用时。XML(eXtensible Markup Language)是一种结构化数据格式,它允许我们存储和传输信息,而JavaScript作为浏览器中...

    js中使用xpath来解析xml元素实用.pdf

    总结一下,JavaScript中使用XPath解析XML元素的关键知识点包括: 1. XPath是用于在XML文档中查找信息的语言,它基于路径表达式。 2. `selectNodes()`和`selectSingleNode()`方法在IE中用于选取XML节点,但不是标准...

    JS解析XML

    JavaScript(简称JS)是一种广泛用于Web开发的轻量级编程语言,它在浏览器环境中执行,为网页添加交互性。在本文中,我们将深入探讨如何在JS中解析XML文档,这是一项重要的技能,尤其是在处理服务器返回的数据或者...

    js解析xml生成菜单

    本项目"js解析xml生成菜单"是结合这两种技术,创建一个适用于IE和Firefox浏览器的动态导航菜单系统,具有良好的可扩展性,能够实现无限级别的子菜单。 首先,我们要理解XML(Extensible Markup Language)的本质。...

    通讯录,js解析xml

    在这个场景下,我们探讨的是如何利用JavaScript(js)解析XML文件,以实现通讯录的分页和查询功能。XML(Extensible Markup Language)是一种用于存储和传输数据的标准化格式,而JavaScript则是一种广泛用于网页和...

    js解析xml案例用层布局

    6. **项目实例**:"李琪--个人记账系统"可能是这个案例的应用场景,一个简单的记账系统可能使用XML存储账户信息,JS负责解析XML并显示在页面上,同时利用Cookie存储用户的偏好,如颜色主题。 综上所述,这个案例...

    javascript解析xml文件

    JavaScript提供了DOMParser API和ActiveXObject(仅限于Internet Explorer)来解析XML。以下是对这个主题的详细阐述: 首先,我们需要了解XML(eXtensible Markup Language),它是一种用于存储和传输数据的标记...

    一个在线解析XML的示例

    2. **数据处理**:一旦XML数据被加载,浏览器会使用DOM(Document Object Model)解析XML文件,将其转换为一棵可操作的节点树。开发者可以通过JavaScript访问这些节点,提取所需信息。 3. **解析XML**:使用DOM API...

    解决Js解析xml浏览器不兼容问题及省市区三级联动实现

    总之,解决JavaScript解析XML的浏览器兼容问题需要对不同解析方法有深入了解,并采用适当的兼容策略。而实现省市区三级联动,则需要熟练掌握DOM操作和事件监听,以及从XML数据中提取和组织信息。通过这些技术,我们...

Global site tag (gtag.js) - Google Analytics