初学javascript,学习中用到在IE中建立XML对象,于是写了一个简单的“库”。因为水平所限,肯定会有不恰当的地方,欢迎指正。

如果大家有知道现存的更好的东西,非常希望大家能将它推荐给我。

代码:

function XmlObject() {
var oXml = new ActiveXObject("Microsoft.XMLDOM");
this.getXmlObj = function() {
return oXml;
}
this.InitXmlObj = function() {
oXml = new ActiveXObject("Microsoft.XMLDOM"); //对象
}
this.isTop = function(oNode) {
if (oNode === oXml) return true;
return false;
}
this.AddTextNode = function(oParent, sKey, sValue) {
if (this.isTop(oParent) == true) {
//为顶级对象添加的节点不能超过一个
if (oXml.childNodes.length > 0) {
//已经存在根节点,不继续添加
return null;
}
}
var oNewNode = oXml.createElement(sKey);
var oTextNode = oXml.createTextNode(sValue);
oParent.appendChild(oNewNode);
oNewNode.appendChild(oTextNode);
return oNewNode;
}
this.AddAttrNode = function(oParentNode, sNodeName, sAttr, sValue) {
if (this.isTop(oParent) == true) {
//为顶级对象添加的节点不能超过一个
if (oXml.childNodes.length > 0) {
//已经存在根节点,不继续添加
return null;
}
}
var oNewNode = oXml.createElement(sNodeName);
oParentNode.appendChild(oNewNode);
oNewNode.setAttribute(sAttr, sValue);
return oNewNode;
}
this.AddAttrTextNode = function(oParentNode, sNodeName, sNodeText, sAttrName, sAttrValue) {
if (this.isTop(oParentNode) == true) {
//为顶级对象添加的节点不能超过一个
if (oXml.childNodes.length > 0) {
//已经存在根节点,不继续添加
return null;
}
}
var oNewNode = oXml.createElement(sNodeName);
var oTextNode = oXml.createTextNode(sNodeText);
oParentNode.appendChild(oNewNode);
oNewNode.setAttribute(sAttrName, sAttrValue);
oNewNode.appendChild(oTextNode);
return oNewNode;
}
this.getXmlStr = function() {
return oXml.xml;
}
}

演示代码:

function onXml() {
var oXmlOp = new XmlObject();
var oTop = oXmlOp;
var oTop = oXmlOp.AddAttrTextNode(oXmlOp.getXmlObj(), "UserInfo", "", "class", "dianxin1005");
oXmlOp.AddAttrTextNode(oTop, "Subject", "Chinese", "Score", "98");
oXmlOp.AddAttrTextNode(oTop, "Subject", "Math", "Score", "77");
oXmlOp.AddAttrTextNode(oTop, "Subject", "English", "Score", "99");
alert(oXmlOp.getXmlStr());
}

  

生成的XML是:

<UserInfo class="dianxin1005">
<Subject Score="98">
Chinese
</Subject>
<Subject Score="77">
Math
</Subject>
<Subject Score="99">
English
</Subject>
</UserInfo>

  

一个构建XML对象的js库的更多相关文章

  1. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

  2. impress.js 一个创建在线幻灯的js库

    真的好奇怪,我居然会写前端技术的博客.没有办法的,最近实习,看的大多是前端.所以今天就用这个来练练手了. Impress.js 是一个非常棒的用来创建在线演示的Javascript库.它基于CSS3转 ...

  3. 安利一个绘制指引线的JS库leader-line

    前言 之前看到一篇推荐Magi这个搜索引擎的新闻,对于这个搜索引擎是否好用咱们不予置评,但是我在这个搜索引擎上面发现了一个好玩的前端功能. 如上图,将鼠标浮动到学习来源上时,会展示一堆指引线. 本博客 ...

  4. 一个流行的网页动画JS库

    animejs https://animejs.com/ Anime.js (/ˈæn.ə.meɪ/) is a lightweight JavaScript animation library wi ...

  5. 利用moment为基础,基于DOM实现一个多个倒计时同时进行的js库方便使用

    moment非常强大,提供了很多时间方法的封装,项目需要一个小倒计时的功能,网上找了很多不合适,决定自己写一个,直接上代码 //定义一个立即执行的函数(function () { var Ticts= ...

  6. typescript+webpack构建一个js库

    依赖说明 入口文件 tsconfig配置 webpack配置文件 webpack入口文件配置 webpack为typescript和less文件配置各自的loader webpack的output配置 ...

  7. 【转载】写一个js库需要怎样的知识储备和技术程度?

    作者:小爝链接:https://www.zhihu.com/question/30274750/answer/118846177来源:知乎著作权归作者所有,转载请联系作者获得授权. 1,如何编写健壮的 ...

  8. 构建自己的js库

    一.背景 web前端开发人员经常会用到一些现成的js库(框架).框架的使用增加了代码的模块化和可复用性,最主要的是屏蔽了浏览器之间差异性的实现,使得代码更加简洁,框架使用者只需要将注意力放在业务的实现 ...

  9. 仿照jquery封装一个自己的js库(二)

    本篇为完结篇.主要讲述如何造出轮子的高级特性. 一. css方法的高级操作 先看本文第一部分所讲的dQuery css方法 //css方法 dQuery.prototype.css=function( ...

随机推荐

  1. Quartz CronTrigger最完整配置说明

    转:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html   Quartz CronTrigger最完整配置说明 CronTr ...

  2. Struts2 - Convertion

    Struts2中的Convertion插件是比较有用,它可以简化很多操作,比如不需要一个一个Action在struts.xml中设置.当然,最有意义的是它与rest插件一起整合使用,可以完成web-s ...

  3. LintCode "Backpack"

    A simple variation to 0-1 Knapsack. class Solution { public: /** * @param m: An integer m denotes th ...

  4. Bind9用view配主从

    We use two Bind server to realize view, master, slave----------------------------------------------- ...

  5. activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  6. Grid_Oracle Grid Infrastructure概念介绍(概念)

    2014-03-09 Created By BaoXinjian Thanks and Regards

  7. NeHe OpenGL教程 第十四课:图形字体

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 非常陌生的cmake

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  9. centos update git(转载)

    From:http://itekblog.com/update-git-centos/ 1.下载RPMForge repo cd /tmp # bit: wget http://pkgs.repofo ...

  10. map遍历测试结果

    结论:一般情况下推荐使用enterSet的for循环(即以下的方法2),如果只是取key值可以使用keySet性能会更好. 因为keySet只取key,enterSet即取了key又取了value. ...