Javascript里使用Dom操作Xml

有何不好 · 发布于 2017-01-11 · 字数6770 · 浏览 844 · 评论 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-12-03Zaxas轻量级面向对象编程Ajax框架库
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-12-02FlyJSONP轻量级的跨域AJAX请求插件
  • 2016-12-02Response JS创建高性能的支持移动设备的网站
  • 2016-05-16说的太好了!UI设计新手7条法则助你逆袭(二)
  • 2016-05-16实用好文!iOS和安卓设计规范的10个不同点?
  • 2016-06-13jQuery UI MultiSelect Widget多选下拉列表插件
  • 2016-06-14Kalendae轻量级时间日期选择JavaScript插件
  • 发布评论

    为您推荐

    用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具有易于…

    酷比了!Whats APP黑色版界面设计欣赏

    WhatsApp[1] 是一款非常受欢迎的跨平台应用程序,用于智能手机之间的通讯。本应用程序借助推送通知服务,可以即刻接收亲友和同事发送的信息。可免费从发送手机…

    • 酷比了!Whats APP黑色版界面设计欣赏
    • 酷比了!Whats APP黑色版界面设计欣赏
    • 酷比了!Whats APP黑色版界面设计欣赏
    • 酷比了!Whats APP黑色版界面设计欣赏
    GuntherJay · 发布于 2016-05-15 · 浏览 1095 · 评论 0

    搞定这10招!助你成功转型自由职业

    无论你是初出茅庐还是被工作缠身,大多创意工作者迟早都会考虑加入自由职业。自由职业者的自主生活方式是一个强大的诱惑,灵活的工作时间、多种多样的工作,你就是自己的老…

    • 搞定这10招!助你成功转型自由职业
    • 搞定这10招!助你成功转型自由职业
    • 搞定这10招!助你成功转型自由职业
    • 搞定这10招!助你成功转型自由职业
    半面淚妝眷卿三世 · 发布于 2016-05-16 · 浏览 936 · 评论 0
    问说网 · 发布于 2016-06-03

    IE浏览器中CSS相关Bub Hack大集合

    这部分的 bug 是比较普通的无法归到其它种类,或是同时属于多个种类的Bug。的 bug 是比较普通的无法归到其它种类,或是同时属于多个种类的Bug。

    Timelinr简单的时间线jQuery插件
    问说网 · 发布于 2016-07-04

    Timelinr简单的时间线jQuery插件

    Timelinr是一个简单的时间线jQuery插件,这个简单的插件可以帮助你给更多的生活无聊的时间线。支持水平和垂直布局,你可以为大多数属性指定参数:速度,透明…

    问说网 · 发布于 2016-07-05

    刷流量的注意了使用流量宝可能会中毒!

    相信大家都知道刷流量的有很多软件,最著名的就是流量精灵和流量宝,而我一直使用的流量宝,两个软件的使用基本差不多,可是你知道吗?使用流量刷流量可能会中毒,这不是危…

    Vincent · 发布于 2016-07-06

    Java中面向对象的封装和继承以及多态

    封装 封装是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问 java的…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    有何不好

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

    102 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 2793

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 2613

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 2692

    图片素材

    关注 图片素材

    文章 29463 · 浏览 2136

    高清图片

    关注 高清图片

    文章 26530 · 浏览 2348

    更多 推荐作者

    关注 惢碎葬爱

    文章 96 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 流浪的脚步

    文章 86 · 评论 0

    关注 籹孒不认输

    文章 94 · 评论 0

    关注 呼吸快窒息

    文章 104 · 评论 0

    关注 失戀德標簽

    文章 92 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

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

    您的反馈我们已收到!

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