Javascript里使用Dom操作Xml

有何不好 · 发布于 2017-01-11 · 字数6770 · 浏览 851 · 评论 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;

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

相关文章

  • 2014-02-19制作BuddyPress主题教程1:BuddyPress的API介绍和loop循环工作
  • 2014-11-20WordPress添加和移除注册用户的联系方式
  • 2014-12-12Factory Method 模式的进一步探索
  • 2015-03-13使用CSS3制作3D图片动画画廊灯箱效果
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-03-08使用JavaScript中的Navigator检测浏览器
  • 2016-04-17在Photoshop中创建简单绚丽的线条特效
  • 2016-05-15酷比了!Whats APP黑色版界面设计欣赏
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-06-22

    通过jQuery和PHP创建自定义外观文件上传控件

    我们都知道,网页文件上传控件的自定义外观非常有限,虽然有很多插件和教程可以使用,但是完成这个功能仍然是一种工作的挑战,本教程将引导您通过创建一个jQuery插件…

    问说网 · 发布于 2015-06-26

    DokuWiki与WordPress的用户整合

    DokuWiki是比较好用的维基百科系统,使用文件保存数据,不需要数据库,而WordPress是最好用博客系统,还可以开放用户注册,那么这两个系统能否整合在一起…

    太棒了!手把手教你用PS画一只逼真的眼睛

    人类的眼睛结构和组成构造都是相似的:椭圆结构、两边尖削,有眼睑、眼睫和眉毛。很容易就能画出一只易辨认的眼睛,今天CYHD和大家一起来学习如何画出逼真的眼睛吧~

    • 太棒了!手把手教你用PS画一只逼真的眼睛
    • 太棒了!手把手教你用PS画一只逼真的眼睛
    • 太棒了!手把手教你用PS画一只逼真的眼睛
    • 太棒了!手把手教你用PS画一只逼真的眼睛
    莫荻 · 发布于 2016-05-14 · 浏览 1022 · 评论 0
    问说网 · 发布于 2016-12-02

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

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

    问说网 · 发布于 2016-06-06

    JS制作的炸金花小游戏

    众所周知,一副扑克牌有4个花色,每个花色13张点数,加上两个joker一共是54张,我们这里没有用到joker,所以是52张。构建扑克牌用 到了一个很好玩的算法…

    Kalendae轻量级时间日期选择JavaScript插件
    问说网 · 发布于 2016-06-14

    Kalendae轻量级时间日期选择JavaScript插件

    Kalendae是一个轻量级的时间日期选择JavaScript插件,这是一个独立的插件,不依赖任何第三方插件库,使用简单方便,完美支持日期的年月日选择。

    Blueberry响应式轻量级的jQuery幻灯片插件
    问说网 · 发布于 2016-06-15

    Blueberry响应式轻量级的jQuery幻灯片插件

    Blueberry响应式轻量级的jQuery幻灯片插件,专门为响应网页设计编写jQuery的图像滑块。,特别适合支持流体和响应式的网页布局设计,Blueberr…

    问说网 · 发布于 2016-06-24

    配置和查看Apache运行性能监控状态

    我们可以通过命令行来查看Apache的运行情况,但是无法查看Apache那些进程是处于工作状态,那些处于等待状态,当前有多少连接,还剩余多少空闲连接资源等信息。

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    有何不好

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

    102 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 3042

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 2816

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 2928

    图片素材

    关注 图片素材

    文章 29463 · 浏览 2348

    高清图片

    关注 高清图片

    文章 26530 · 浏览 2552

    更多 推荐作者

    关注 怎麽继续

    文章 90 · 评论 2

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 走了留下什么

    文章 110 · 评论 0

    关注 流浪的脚步

    文章 86 · 评论 0

    关注 凉城梦镜

    文章 79 · 评论 0

    关注 呼吸快窒息

    文章 104 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

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

    您的反馈我们已收到!

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