废话不多说代码如下 包含了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的常规处理
分享到:
相关推荐
### JavaScript读取XML文件的方法详解 #### 一、引言 在现代Web开发中,XML(可扩展标记语言)作为一种轻量级的数据交换格式,在早期的Web应用中扮演着重要的角色。JavaScript作为前端的主要编程语言之一,具备强大...
总的来说,JavaScript操作XML和HTML是Web开发的基础技能,通过学习和熟练掌握这些技术,开发者能够构建功能丰富的、交互性强的网页应用。随着Web技术的不断发展,JavaScript在处理XML和HTML方面的能力也在不断提升,...
以上就是使用JavaScript操作XML文件的基本步骤和示例。在实际应用中,可能还需要考虑错误处理、兼容性问题以及更复杂的逻辑操作。理解并熟练运用这些技术,可以帮助开发者在前端环境中有效地处理和操作XML数据。
Javascript操作XML Dom学习资料
总结来说,JavaScript读取XML的基本流程包括: 1. 创建或获取XML文档对象,例如通过`new ActiveXObject("Microsoft.XMLDOM")`(在旧版IE中)或`new DOMParser().parseFromString(xmlString, "text/xml")`(在现代...
以上就是JavaScript操作XML的基本知识,包括创建XML对象、DOM操作、事件处理以及通过AJAX获取和解析XML数据的方法。理解这些概念和实践,将有助于你在实际项目中更好地处理XML数据。在提供的“JavaScript节点操作xml...
### JavaScript读取XML文件知识点详解 #### 一、XML与JavaScript简介 - **XML (Extensible Markup Language)**:一种标记语言,类似于HTML,用于存储和传输数据。它被设计成具有自描述性,使得数据在不同系统间...
JavaScript操作XML类主要涉及到在前端使用JavaScript与服务器之间交换数据,特别是XML格式的数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于Web应用程序的数据传输。以下是一些关键知识点: ...
在JavaScript中读取XML文件,主要是通过DOM(Document Object Model)接口来实现的。下面我们将深入探讨如何使用JavaScript来处理XML文件。 1. 创建XMLHttpRequest对象 JavaScript中读取XML文件首先需要创建一个...
JavaScript读取XML文件内容的过程就是这样,这涉及到异步请求、XML解析以及DOM操作。这个过程对于Web开发者来说是必不可少的技能,特别是在处理需要与服务器交换数据的应用中。理解并熟练掌握这些技术,将有助于构建...
JavaScript操作XML是一种常见的数据交互方式,特别是在Web应用程序中。XML(eXtensible Markup Language)是一种结构化数据格式,常用于存储和传输数据。而JavaScript作为客户端编程语言,提供了多种方式来解析、...
提供了从url到XMLDOC和从xml文本到XMLDOC对象的方法
总结起来,"JavaScript读取XML节点生成多级菜单"这个任务涉及到XML解析、DOM操作、事件处理、CSS样式和性能优化等多个方面。通过这些知识点,我们可以构建出一个功能完整、交互友好的多级菜单系统。在实际开发中,还...
以下是一些关于如何在JavaScript中读取XML文件的关键知识点: 1. **DOM解析XML**: - 当XML文件在浏览器环境中加载时,浏览器会自动构建一个DOM树。JavaScript可以通过`document.implementation.createDocument()`...
在本文中,我们将探讨如何使用JavaScript操作XML文档来生成树形菜单。树形菜单是一种常见的用户界面元素,用于组织和展示层次结构的数据,如网站导航或文件系统。在这个例子中,我们将使用提供的XML数据来构建这样一...
JavaScript操作XML DOM对象是Web开发中的重要技能,尤其在处理数据交换、页面动态更新和跨平台通信时。本文将深入探讨这一主题,并结合JavaScript技巧,为开发者提供一个全面的指导。 1. **DOM(文档对象模型)基础...
接下来,我们来看一个简单的示例,用于演示如何使用JavaScript操作XML数据。 ```html <title>JavaScript 操作 XML 示例 <script language="javascript"> function test() { // 创建 DOM 对象 var xmlDoc = ...