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 相关文章推荐
jquery validation插件表单验证的一个例子
Mar 03 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
深入解析Javascript闭包的功能及实现方法
Jul 10 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
JS实现分页导航效果
Feb 19 Javascript
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
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
python追加元素到列表的方法
2015/07/28 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
pip install命令安装扩展库整理
2021/03/02 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
一份Java笔试题
2012/02/21 面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
职业生涯规划书前言
2014/04/15 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
技术负责人岗位职责
2015/02/10 职场文书
简历自我评价模板
2015/03/11 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python