Javascript里使用Dom操作Xml
一.本笔记使用的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;
转载于:https://www.cnblogs.com/goody9807/archive/2006/06/12/424031.html
Javascript里使用Dom操作Xml相关推荐
- 用JavaScript语言通过DOM遍历XML文档
实验结果要求如下: 解决步骤: 1. 首先是布局,左边用表格比较方便,右边是个div块. 2. 嵌入JavaScript脚本,由易到难,写定义全部显示的功能函数.显示姓名功能函数,显示属性功能函数 ...
- JavaScript(二)之DOM 操作
JavaScript之DOM 操作 一.DOM 获取 二.添加元素 三.修改元素 四.删除元素 五.Web Storage 六.定时任务和延时操作 一.DOM 获取 文档对象模型简称 DOM,DO ...
- javascript 常用的dom操作及源生事件
javascript dom操作及源生事件 获取dom节点 操作dom节点 源生事件 -- 绑定.解除事件 源生事件 -- 事件派送 获取dom节点 document.getElementById() ...
- PHP通过DOM操作XML
属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型 Definition 以DTD或XML模式给出的节 ...
- JavaScript入门篇 - DOM操作
认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代 ...
- Dom操作xml的常用方法
(Dom的全部方法和属性可到vs的对象浏览器察看) '创建DOM对象 set objDom=server.CreateObject("microsoft.xmldom") '取得x ...
- w3c dom操作Xml时从加入另一个XML文件的一个元素
同时读取两个XML文件,如果需要把一个XML 文件中的某个特定元素的内容插入到另外一个XML文件中时,要用importNode()方法,具体使用例子如下: import java.io.ByteArr ...
- JavaScript事件处理与DOM操作练习题
1.利用onblur事件实现文本框中英文字母全部转换成大写,效果如下所示 代码如下: 文本框中输入:<input type="text" id="t1" ...
- JavaScript教程之DOM和BOM
一:DOM操作 ##1. 介绍 ## dom: document object model 文档对象模型 DOM可以让我们通过javascript语言对html文档进行增.删.改.查操作. 为了方便j ...
最新文章
- 叛乱怎么自定义服务器,» 叛乱:沙漠风暴 服务器安装Mod教程
- mysql训练逻辑的题_全国计算机等级考试二级教程mysql复习题练习题.docx
- 命令查看java的class字节码文件、verbose、synchronize、javac、javap
- TestNG方法測试及注意要点 代码及配置具体解释(解决testng方法不运行问题)
- django的模板系统过滤器笔记
- Poj 1166 The Clocks(bfs)
- [Win11]解决PS/2标准键盘带感叹号,笔记本键盘无法使用。代码19:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个
- 机器学习数学基础二:泰勒公式与拉格朗日
- ftp 227 entering passive mode
- 冠军团队访谈录|第三届全国人工智能大赛
- YOLOV5改进||YOLOV5+GSConv+Slim Neck
- 阿里云人脸对比API使用
- 怎么写一个php脚本_php脚本怎么写
- 什么是IaaS、PaaS和SaaS
- JMX Connectors
- JS 逆向的时候 Python 如何调用 JavaScript 代码?「建议收藏哦!」
- R语言灰色关联分析法
- 虚拟机共享文件夹看不到问题
- 关于如何学习日语的最快方法
- 紧扣时髦潮水 OPPO U701珍珠红亮相
热门文章
- LeetCode 1945. 字符串转化后的各位数字之和
- LeetCode 1616. 分割两个字符串得到回文串
- LeetCode 1216. 验证回文字符串 III(DP)
- Pandas入门3(dtype+fillna+replace+rename+concat+join)
- LeetCode 1262. 可被三整除的最大和(DP)
- LeetCode 26. 删除排序数组中的重复项
- micropython webrepl_4-5 MicroPython WebREPL 命令行交互环境设置-2 接入点模式
- Tensorflow线程队列与IO操作
- textlayout Java_Java TextLayout.getBounds方法代码示例
- 论文浅尝 | AAAI2020 - 基于规则的知识图谱组合表征学习