Javascript里使用Dom操作Xml

有何不好 · 发布于 2017-01-11 · 字数6770 · 浏览 822 · 评论 0

一.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;

本文系作者 有何不好 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2015-03-07使用HTML5调用手机摄像头实现拍照上传
  • 2015-06-10用PS创建文字野火燃烧的效果
  • 2015-10-12FireShell轻量级开发流程管理工具
  • 2015-08-06jQuery.bxSlider中文API参数使用介绍
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-12-02FlyJSONP轻量级的跨域AJAX请求插件
  • 2016-12-02Response JS创建高性能的支持移动设备的网站
  • 2016-06-06JavaScript数组元素的排序及洗牌算法
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-03-07

    C语言的输入与输出流

    C++ 版本有个Iostream( Cin ,Cout 就在里面,实际上C++的IO 库很大,是一个复杂的基于对象的模板系统),C 也有它的Stdio.h(有I…

    问说网 · 发布于 2015-10-12

    FireShell轻量级开发流程管理工具

    FireShell 是一个比较轻量级的框架,基于 HTML5、Grunt和Sass。为现代开发者而诞生,对于团队和个人来说,真是一个棒的开发流程管理工具。

    Moobile基于MooTools移动应用开发框架

    Moobile 是一个基于 MooTools 的移动应用框架。能够兼容主流的Web浏览器,Moobile是基于MooTools的移动Web应用框架,是一个新项目…

    • Moobile基于MooTools移动应用开发框架
    • Moobile基于MooTools移动应用开发框架
    • Moobile基于MooTools移动应用开发框架
    • Moobile基于MooTools移动应用开发框架
    问说网 · 发布于 2016-01-14 · 浏览 1178 · 评论 0
    用JavaScript实现给出的盒子的序列是否可连为一矩型
    AustenJuliet · 发布于 2017-01-19

    用JavaScript实现给出的盒子的序列是否可连为一矩型

    by cpglkg <script>var arr=[5,10,15];function rect(arr,width){ arr.sort(fun…

    问说网 · 发布于 2016-12-02

    FlyJSONP轻量级的跨域AJAX请求插件

    FlyJSONP是一个JavaScript库,用于实现跨域GET和POST请求服务,支持JSONP,并取得一个JSON格式的数据响应,这个Library具有易于…

    问说网 · 发布于 2016-12-02

    Response JS创建高性能的支持移动设备的网站

    Response JS 是一个轻量级的 jQuery 插件,用来创建高性能的支持移动设备的网站。它提供了一套语法用来根据不同的设备环境动态替换HTML代码。例如…

    快速搞定配色!掌握3个实用方法快速搞定配色

    色彩是最能引起心境和情绪共鸣的元素,三原色能调配出丰富多彩的色彩,色彩搭配更是千变万化。设计配色时,我们可以摒弃一些传统的默认样式,了解设计背后的需求点,思考色…

    • 快速搞定配色!掌握3个实用方法快速搞定配色
    • 快速搞定配色!掌握3个实用方法快速搞定配色
    • 快速搞定配色!掌握3个实用方法快速搞定配色
    • 快速搞定配色!掌握3个实用方法快速搞定配色
    失戀德標簽 · 发布于 2016-05-16 · 浏览 958 · 评论 0

    iOS 8新体验!4大人性化设计让你的生活更轻松

    苹果将iOS 8视为“有史以来发布的极其重大iOS版本”,可是当你完成升级时,你几乎在主屏上感觉不到增加新图标产生的差异。其最大的变化就是:让你的生活变得更轻松…

    • iOS 8新体验!4大人性化设计让你的生活更轻松
    • iOS 8新体验!4大人性化设计让你的生活更轻松
    • iOS 8新体验!4大人性化设计让你的生活更轻松
    • iOS 8新体验!4大人性化设计让你的生活更轻松
    FelixMiranda · 发布于 2016-05-16 · 浏览 925 · 评论 0

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    有何不好

    小时候 看着满天的星斗 当流星飞过的时候 却总来不及许愿长大了 遇见自己真正喜欢的人却还是来不及我不相信爱情 但一直停不下来 恋爱是一场意外 何时 何地 何人……一切都仿佛悬疑 沉重且巨大

    102 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 1809

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 1743

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 1750

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1249

    高清图片

    关注 高清图片

    文章 26530 · 浏览 1447

    更多 推荐作者

    关注 怎麽继续

    文章 90 · 评论 2

    关注 倾听寂寞

    文章 83 · 评论 0

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 籹孒不认输

    文章 94 · 评论 0

    关注 呼吸快窒息

    文章 104 · 评论 0

    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!