Javascript里使用Dom操作Xml

有何不好 · 发布于 2017-01-11 · 字数6770 · 浏览 830 · 评论 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-11-21在WordPress单页面列表中添加自定义字段
  • 2015-12-23jBar基于jQuery的消息提醒插件
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-12-02FlyJSONP轻量级的跨域AJAX请求插件
  • 2016-03-08用UltraEdit搭建Perl集成开发环境
  • 2016-12-02Response JS创建高性能的支持移动设备的网站
  • 2016-06-11Tinycon浏览器的网站图标上显示冒泡的数字
  • 2016-06-13jQuery UI MultiSelect Widget多选下拉列表插件
  • 发布评论

    为您推荐

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

    Gumby2基于SASS的灵活的响应式CSS框架

    Gumby 是一个响应式的以及 960 像素宽度的 CSS 网格框架,支持 PC、平板和手机屏幕显示。类似 Twitter 的 Bootstrap,它包括一个W…

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

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

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

    一个消息调度框架构建
    问说网 · 发布于 2015-08-08

    一个消息调度框架构建

    PID (功能子模块) ,框架中用PID作为模块的划分,每个模块具有自己的PID编号,根据功能和调度需求可以安排多个PID到一个MDU中,PID是消息通信的一个…

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

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

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

    如何用PS图层样式打造唯美抽象光

    抽象光的制作在广告、海报、游戏场景设计中特别多,这类唯美的光线制作也是学PS时首要掌握的难点。我们今天要学的抽象光,也是在进阶合成技术的过程中必备的另一项技能。

    • 如何用PS图层样式打造唯美抽象光
    • 如何用PS图层样式打造唯美抽象光
    • 如何用PS图层样式打造唯美抽象光
    • 如何用PS图层样式打造唯美抽象光
    AbeCecilia · 发布于 2016-05-16 · 浏览 912 · 评论 0

    有帮助!值得一看!网页设计中的“点、线、面”

    今天要和设计朋友们探讨的内容——网页设计中的“点、线、面”——平面构成在网页设计中的运用。我们首先要明确:一个网页作品的基础并不是那些不理想的素材,也不是那些斑…

    • 有帮助!值得一看!网页设计中的“点、线、面”
    • 有帮助!值得一看!网页设计中的“点、线、面”
    • 有帮助!值得一看!网页设计中的“点、线、面”
    • 有帮助!值得一看!网页设计中的“点、线、面”
    傾城紅顔醉 · 发布于 2016-05-16 · 浏览 1024 · 评论 0

    经验分享!你知道字体与产品气质之间的关系吗?

    给产品设计字体的时候,除了考虑易读性,还需要考虑是否能准确地传递给用户属于这款产品的独特气质。如何使用一款合适的字体准确地将产品气质传递给用户,这是设计师应该考…

    • 经验分享!你知道字体与产品气质之间的关系吗?
    • 经验分享!你知道字体与产品气质之间的关系吗?
    • 经验分享!你知道字体与产品气质之间的关系吗?
    • 经验分享!你知道字体与产品气质之间的关系吗?
    AchesonArlene · 发布于 2016-05-16 · 浏览 924 · 评论 0

    [智能电视UI教程]智能电视用户体验设计分享之遥控器篇

    今天有请负责 智能电视 APP设计一年半的 @卜卜胡萝卜1992 给大家分享一些实用的设计经验,科普 智能电视 用户体验 的基础知识。接上一篇 《电视用户体验第…

    • [智能电视UI教程]智能电视用户体验设计分享之遥控器篇
    • [智能电视UI教程]智能电视用户体验设计分享之遥控器篇
    • [智能电视UI教程]智能电视用户体验设计分享之遥控器篇
    • [智能电视UI教程]智能电视用户体验设计分享之遥控器篇
    WellsJared · 发布于 2016-05-17 · 浏览 921 · 评论 0

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    有何不好

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

    102 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 2057

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 1969

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 2001

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1481

    高清图片

    关注 高清图片

    文章 26530 · 浏览 1680

    更多 推荐作者

    关注 秋末残雪

    文章 106 · 评论 0

    关注 惢碎葬爱

    文章 96 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 思念像咒语

    文章 102 · 评论 0

    关注 空城

    文章 107 · 评论 0

    关注 讓風帶走愛

    文章 116 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

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

    您的反馈我们已收到!

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