Javascript里使用Dom操作Xml


Posted in Javascript onSeptember 20, 2006

一.Xml文件
二.IXMLDOMDocument/DOMDocument简介 
2.1 属性
2.1.1  parseError 
2.1.2  async. 
2.1.3  xml 
2.1.4  text 3 
2.1.5  attributes 
2.1.6  nodeName
2.1.7  documentElement 
2.1.8  nextSibling
2.1.9  childNodes
2.1.10  firstChild
2.1.11  lashChild
2.2 方法
2.2.1  loadXML
2.2.2  load
2.2.3  selectSingleNode
2.2.4  selectNodes
2.2.5  getElementsByTagName
2.2.6  hasChildNodes
三.例子
一.Xml文件 
<?xml version="1.0"?>
<book level="1"> 
  <Name>c++</Name> 
  <Price>20</Price> 
 <info>
<k>1</k>
  </info>
  <info>
    <k>2</k> 
  </info> 
</book> 
在asp.net下实现代码:
string str = Server.MapPath("test1.xml"); 
XmlTextWriter xmlWriter = new XmlTextWriter(str,null); 
xmlWriter.Formatting = System.Xml.Formatting.Indented; 
xmlWriter.WriteStartDocument(); 
xmlWriter.WriteStartElement("book"); 
xmlWriter.WriteAttributeString("level","1"); 
xmlWriter.WriteElementString("Name","c++"); 
xmlWriter.WriteElementString("Price","20"); 
xmlWriter.WriteStartElement("info"); 
xmlWriter.WriteElementString("k","1"); 
xmlWriter.WriteEndElement(); 
xmlWriter.WriteStartElement("info"); 
xmlWriter.WriteElementString("k","2"); 
xmlWriter.WriteEndElement(); 
xmlWriter.WriteEndElement(); 
xmlWriter.WriteEndDocument(); 
xmlWriter.Close(); 
二.IXMLDOMDocument/DOMDocument简介 
2.1 属性 
2.1.1  parseError 
Returns an IXMLDOMParseError object that contains information about the last parsing error
返回解析错误时的一个对象。
重要的有parseError.errorCode,parseError.reason
如果load时路径不对,会返回“系统未找到指定的对象”的错误
2.1.2  async 
Specifies whether asynchronous download is permitted
是否允许异步下载,布尔值
2.1.3  xml 
Contains the XML representation of the node and all its descendants. Read-only.
该点及下面派生的所有点的全部信息,只读如果要求book点的xml,返回“<book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>”,如果Name的xml,返回“<Name>c++</Name>”
2.1.4  text 
Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write
该点及下面派生的所有点的全部节点值,可读可写
<price>20</price>
则text为20
"Name"节点的text为"c++"
2.1.5  attributes 
Contains the list of attributes for this node
返回属性的集合。
2.1.6  nodeName 
Returns the qualified name for attribute, document type, element, entity, or notation nodes. Returns a fixed string for all 
other node types. Read-only
该节点名称
"Name"节点的nodeName为"Name","book"节点的nodeName为"book"
2.1.7  documentElement 
Contains the root element of the document
xml的根节点
上面的xml的根节点为"book"
2.1.8  nextSibling 
Contains the next sibling of the node in the parent's child list. Read-only.
下一个兄弟节点,只读
2.1.9  childNodes 
Contains a node list containing the child nodes
所有的子节点。
2.1.10  firstChild 
Contains the first child of the node
第一个子节点
2.1.11  lastChild 
Returns the last child node
最后一个子节点
2.2 方法 
2.2.1  loadXML 
Loads an XML document using the supplied string
2.2.2  load 
Loads an XML document from the specified locati
参数的路径为服务器端的,是相对路径
2.2.3  selectSingleNode 
Applies the specified pattern-matching operation to this node's context and returns the first matching node
返回第一个匹配的项
2.2.4  selectNodes 
Applies the specified pattern-matching operation to this node's context and returns the list of matching nodes as IXMLDOMNodeList
符合条件的所有项。
2.2.5  getElementsByTagName 
Returns a collection of elements that have the specified name
返回与元素名匹配的一个node的集合
2.2.6  hasChildNodes 
Provides a fast way to determine whether a node has children
判断是否含有子节点
返回值为bool值
三.例子 
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.load("test\\test1.xml");
if (xmlDoc.parseError.errorCode!=0)
{
var error = xmlDoc.parseError;
  alert(error.reason)
return;
}
var root = xmlDoc.documentElement;   //根节点
Form1.test1.value = root.xml;
/*结果如下:
<book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>*/
Form1.test1.value = root.nodeName;  //结果为"book"
var att = root.attributes;  //得到该点下所有属性的集合
var str = "";
for (var i=0; i<att.length; i++)
{
str += att.item(i).nodeName+":"+att.item(i).text;
}
Form1.test1.value = str;  //只有一个属性,所以结果为“level:1”
var fNode;
var lNode;
var nextSibling;
fNode = root.firstChild;   //第一个子节点Name
lNode = root.lastChild;    //最后一个子节点 info
nextSibling = fNode.nextSibling;  //第一个子节点Name的后一个兄弟节点,即Price
str = fNode.nodeName + ":" + fNode.text;  //结果:"Name:c++"
str = lNode.nodeName + ":" + lNode.text;  //结果为:"info:2"
str = nextSibling.nodeName + ":"  + nextSibling.text;  //结果为:"Price:20"
var nodeList;
str = "";
nodeList = xmlDoc.selectNodes("//info");  //查找元素名为"info"的节点
for (var j=0; j<nodeList.length; j++)  //有两个info节点
{
var infoNode = nodeList.item(j);
var cldNodes = infoNode.childNodes;  //info节点的子节点集
for (var k=0; k<cldNodes.length; k++)
{
       str += cldNodes.item(k).nodeName + ":" + cldNodes.item(k).text + " ";
}
//结果“k:1 k:2 ”
}
str = "";
var sNode;
sNode = xmlDoc.selectSingleNode("//info"); //找到第一个和"info"匹配的
var scldNodes = sNode.childNodes;  //info节点的子节点集
for (var t=0; t<scldNodes.length; t++)
{
str += scldNodes.item(t).nodeName + ":" + scldNodes.item(t).text + " ";
}
//结果“k:1”
Form1.test1.value = str;

Javascript 相关文章推荐
Js 获取HTML DOM节点元素的方法小结
Apr 24 Javascript
Prototype Hash对象 学习
Jul 19 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
js中document.write的那点事
Dec 12 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
vue动态注册组件实例代码详解
May 30 Javascript
js函数和this用法实例分析
Mar 13 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
Jul 20 Javascript
vue实现简单数据双向绑定
Apr 28 Vue.js
Js+XML 操作
Sep 20 #Javascript
发现的以前不知道的函数
Sep 19 #Javascript
多个iframe自动调整大小的问题
Sep 18 #Javascript
跨浏览器的设置innerHTML方法
Sep 18 #Javascript
JavaScript Base64编码和解码,实现URL参数传递。
Sep 18 #Javascript
JavaScript静态的动态
Sep 18 #Javascript
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 #Javascript
You might like
基于Zend的Config机制的应用分析
2013/05/02 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
一个简单的php路由类
2016/05/29 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php获取微信openid方法总结
2019/10/10 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
小小聊天室Python代码实现
2016/08/17 Python
windows下ipython的安装与使用详解
2016/10/20 Python
获取Django项目的全部url方法详解
2017/10/26 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
python redis存入字典序列化存储教程
2020/07/16 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
抽象类和接口的区别
2012/09/19 面试题
物业管理大学生个人的自我评价
2013/10/10 职场文书
教师师德演讲稿
2014/05/06 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
中秋节主题班会
2015/08/14 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python