`
wangyalei
  • 浏览: 53979 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JavaScript操作XML

    博客分类:
  • AJAX
阅读更多

废话不多说代码如下 包含了Js 对 xml 的 增、 删 、 改 、 查

 

要处理的xml:

<?xml version="1.0" encoding="utf-8"?>
<students>
	<student id="001" class="2班">
		<name>令狐冲</name>
		<age>20</age>
		<sex>男</sex>
	</student>
	<student id="002" class="1班">
		<name>任盈盈</name>
		<age>18</age>
		<sex>女</sex>
	</student>
</students>

 js 代码如下:

 

// JavaScript Document

//domDoc:文档模型对象
var domDoc = null;

//root:文档模型根对象
var root = null;

//userAgentFlag:客户端浏览器类型标识
var userAgentFlag = null;

//MSXMLVerArr:IE浏览器支持的MSXML控件名称
var MSXMLVerArr = ["Msxml2.DOMDocument.5.0",
				   "Msxml2.DOMDocument.4.0",
				   "Msxml2.DOMDocument.3.0",
				   "Msxml2.DOMDocument",
				   "Microsoft.XmlDom"];

//判断用户浏览器类型
function getUserAgent(){
	var userAgent = navigator.userAgent;
	alert(userAgent);
	if(userAgent.indexOf("IE") != -1){
		return "IE";	
	}
	if(userAgent.indexOf("Firefox")!=-1){
		alert("ok");
	  return "Firefox";
	}
}

function init(){
alert("1111");
  	getDomDoc();	
	domDoc.load("StudentXML.xml");
	root = domDoc.documentElement;	
    alert(root);
	addStu();
	updateStu();
    deleteStu();
}

//获取文件对象模型
function getDomDoc(){
	userAgentFlag = getUserAgent();
	alert(userAgentFlag);
	switch(userAgentFlag){
		case "IE":
			for(var i=0;i<MSXMLVerArr.length;i++){
				try{
					domDoc = new ActiveXObject(MSXMLVerArr[i]);
					break;
				}catch(e){
					continue;
				}	
			}
			break;
		case "Firefox":
		   domDoc = document.implementation.createDocument("","",null);
		   alert("da");
		   break;
	}
	if(domDoc){
	//设置文档对象的异步属性成false 保证文档对象在加载xml文件完成
	//之前,解析器不在继续执行脚本内容
		domDoc.async = false;
	}
}

//添加一个学生信息
function addStu(){
	var xmlStusNode = null;
	var xpathEL = "/students";
	switch(userAgentFlag){
			case "IE":
				xmlStusNode = root.selectNodes(xpathEL).item(0);
				break;
			case "Firefox":
			    var xpe = new XPathEvaluator();
				var nsResolver = xpe.createNSResolver(root);
				alert("ok"+domDoc);
				alert(nsResolver);
				
				xmlStusNode = domDoc.evaluate(xpathEL,domDoc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext();
				alert("oksssssss");
				break;
			default:
				break;
		}		
	//创建新的节点student
	var xmlStuNode = domDoc.createElement("student");
	
	//为新的节点增加id属性,属性值是003
	xmlStuNode.setAttribute("id","003");
	//为新的节点增加class属性,属性值是"3班"
	xmlStuNode.setAttribute("class","0801班");
	
	//创建孙节点name
	var xmlNameNode = domDoc.createElement("name");
	
	//创建孙节点age
	var xmlAgeNode = domDoc.createElement("age");
	
	//创建孙节点sex
	var xmlSexNode = domDoc.createElement("sex");
	
	switch(userAgentFlag){
		
		  case "IE":
			xmlNameNode.text = "wangyalei";
	                xmlSexNode.text = "男";
			xmlAgeNode.text = "21";
				break;
			case "Firefox":
			        xmlNameNode.textContent="wangyalei";
					xmlSexNode.textContent= "男";
					xmlAgeNode.textContent= "21";
				break;
			default:
				break;
		}
	//将孙节点name添加到student上
	xmlStuNode.appendChild(xmlNameNode);
	
	//将孙节点age添加到student上
	xmlStuNode.appendChild(xmlAgeNode);
	

	//将孙节点sex添加到student上
	xmlStuNode.appendChild(xmlSexNode);
	
	//将新节点student添加到原有的Students节点上
	xmlStusNode.appendChild(xmlStuNode);
	alert("添加成功");
	document.write(domDoc.xml);
	alert(domDoc.xml);// firefox 不支持 此方法
}


function updateStu(){
	
	//获得特定的name节点
	var xpathEL= "//student[@id='002']/age";
	
     switch(userAgentFlag){
			case "IE":
				xmlStusNode = root.selectNodes(xpathEL).item(0);
                               xmlStusNode.text = "20";
				break;
			case "Firefox":
			    var xpe = new XPathEvaluator();
				var nsResolver = xpe.createNSResolver(root);
				alert("ok"+domDoc);
				alert(nsResolver);
				
				xmlStusNode = domDoc.evaluate(xpathEL,domDoc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext();
				xmlStusNode.textContent= "20";
				break;
			default:
				break;
		}		

	
	document.writeln("----------------修改成功后的内容---------------------->");

     alert("修改成功");
	document.writeln(domDoc.xml);
	alert(domDoc.xml);// firefox 不支持 此方法
}

//删除学生信息
function deleteStu(){
	//获得编号为002的student节点
	var xpathEL = "//student[@id='002']";
	  switch(userAgentFlag){
			case "IE":
				xmlStusNode = root.selectNodes(xpathEL).item(0);
                  break;
			case "Firefox":
			    var xpe = new XPathEvaluator();
				var nsResolver = xpe.createNSResolver(root);
				xmlStusNode = domDoc.evaluate(xpathEL,domDoc,nsResolver,XPathResult.ANY_TYPE,null).iterateNext();
				break;
			default:
				break;
	  }
	  
	//获得002student节点下的name属性节点
	var xmlNameNode = xmlStusNode.childNodes[0];
	//删除name属性节点
	xmlStusNode.removeChild(xmlNameNode);
	//输出xml文件以便测试
	document.writeln("----------------删除成功后的内容---------------------->");
	  alert("删除成功");
    document.writeln(domDoc.xml);
	//保存到文件,但是ie的安全策略不会允许脚本直接写文件的
//	domDoc.save("StudentXML.xml"); 
}

 

页面调用:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Js操作XMl</title>
<script type="text/javascript" language="javascript" src="Test.js"></script>
</head>
    <body onload="init()">
</body>
</html>

 

以上就是对js对xml的常规处理

  

  • js.rar (2.4 KB)
  • 下载次数: 11
分享到:
评论

相关推荐

    javascript读取XML文件方法

    ### JavaScript读取XML文件的方法详解 #### 一、引言 在现代Web开发中,XML(可扩展标记语言)作为一种轻量级的数据交换格式,在早期的Web应用中扮演着重要的角色。JavaScript作为前端的主要编程语言之一,具备强大...

    Javascript操作XML和HTML

    总的来说,JavaScript操作XML和HTML是Web开发的基础技能,通过学习和熟练掌握这些技术,开发者能够构建功能丰富的、交互性强的网页应用。随着Web技术的不断发展,JavaScript在处理XML和HTML方面的能力也在不断提升,...

    javascript操作xml文件示例

    以上就是使用JavaScript操作XML文件的基本步骤和示例。在实际应用中,可能还需要考虑错误处理、兼容性问题以及更复杂的逻辑操作。理解并熟练运用这些技术,可以帮助开发者在前端环境中有效地处理和操作XML数据。

    Javascript操作XML Dom

    Javascript操作XML Dom学习资料

    Javascript读取XML

    总结来说,JavaScript读取XML的基本流程包括: 1. 创建或获取XML文档对象,例如通过`new ActiveXObject("Microsoft.XMLDOM")`(在旧版IE中)或`new DOMParser().parseFromString(xmlString, "text/xml")`(在现代...

    javascript 操作xml的所有属性事件方法和实例

    以上就是JavaScript操作XML的基本知识,包括创建XML对象、DOM操作、事件处理以及通过AJAX获取和解析XML数据的方法。理解这些概念和实践,将有助于你在实际项目中更好地处理XML数据。在提供的“JavaScript节点操作xml...

    Javascript读取xml文件

    ### JavaScript读取XML文件知识点详解 #### 一、XML与JavaScript简介 - **XML (Extensible Markup Language)**:一种标记语言,类似于HTML,用于存储和传输数据。它被设计成具有自描述性,使得数据在不同系统间...

    Javascript 操作XML类

    JavaScript操作XML类主要涉及到在前端使用JavaScript与服务器之间交换数据,特别是XML格式的数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于Web应用程序的数据传输。以下是一些关键知识点: ...

    JavaScript读取xml

    在JavaScript中读取XML文件,主要是通过DOM(Document Object Model)接口来实现的。下面我们将深入探讨如何使用JavaScript来处理XML文件。 1. 创建XMLHttpRequest对象 JavaScript中读取XML文件首先需要创建一个...

    JavaScript读取xml文件内容.zip

    JavaScript读取XML文件内容的过程就是这样,这涉及到异步请求、XML解析以及DOM操作。这个过程对于Web开发者来说是必不可少的技能,特别是在处理需要与服务器交换数据的应用中。理解并熟练掌握这些技术,将有助于构建...

    javascript 操作xml

    JavaScript操作XML是一种常见的数据交互方式,特别是在Web应用程序中。XML(eXtensible Markup Language)是一种结构化数据格式,常用于存储和传输数据。而JavaScript作为客户端编程语言,提供了多种方式来解析、...

    javascript操作XML

    提供了从url到XMLDOC和从xml文本到XMLDOC对象的方法

    JavaScript读取XML节点生成多级菜单

    总结起来,"JavaScript读取XML节点生成多级菜单"这个任务涉及到XML解析、DOM操作、事件处理、CSS样式和性能优化等多个方面。通过这些知识点,我们可以构建出一个功能完整、交互友好的多级菜单系统。在实际开发中,还...

    javascript读取xml文件

    以下是一些关于如何在JavaScript中读取XML文件的关键知识点: 1. **DOM解析XML**: - 当XML文件在浏览器环境中加载时,浏览器会自动构建一个DOM树。JavaScript可以通过`document.implementation.createDocument()`...

    javascript操作xml生成树形菜单

    在本文中,我们将探讨如何使用JavaScript操作XML文档来生成树形菜单。树形菜单是一种常见的用户界面元素,用于组织和展示层次结构的数据,如网站导航或文件系统。在这个例子中,我们将使用提供的XML数据来构建这样一...

    javascript 操作xml_dom对象整理集合

    JavaScript操作XML DOM对象是Web开发中的重要技能,尤其在处理数据交换、页面动态更新和跨平台通信时。本文将深入探讨这一主题,并结合JavaScript技巧,为开发者提供一个全面的指导。 1. **DOM(文档对象模型)基础...

    javascript操作XML与HTML

    接下来,我们来看一个简单的示例,用于演示如何使用JavaScript操作XML数据。 ```html &lt;title&gt;JavaScript 操作 XML 示例 &lt;script language="javascript"&gt; function test() { // 创建 DOM 对象 var xmlDoc = ...

Global site tag (gtag.js) - Google Analytics