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刷新站IP和PV
Sep 05 Javascript
jQuery 技巧大全(新手入门篇)
May 12 Javascript
通过url查找a元素并点击
Apr 09 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
js封装成插件的步骤方法
Sep 11 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
js Array.slice的8种不同用法示例
Jul 10 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 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 使用expat方式解析xml文件操作示例
2019/11/26 PHP
JS 继承实例分析
2008/11/04 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
python的else子句使用指南
2016/02/27 Python
flask框架路由常用定义方式总结
2019/07/23 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
求职信模版
2013/11/30 职场文书
食品流通安全承诺书
2014/05/22 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
生产操作工岗位职责
2014/09/16 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
2014年库房工作总结
2014/11/26 职场文书
婚内分居协议书范文
2014/11/26 职场文书
承诺函格式模板
2015/01/21 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书