一个构建XML对象的js库
初学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库的更多相关文章
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...
- impress.js 一个创建在线幻灯的js库
真的好奇怪,我居然会写前端技术的博客.没有办法的,最近实习,看的大多是前端.所以今天就用这个来练练手了. Impress.js 是一个非常棒的用来创建在线演示的Javascript库.它基于CSS3转 ...
- 安利一个绘制指引线的JS库leader-line
前言 之前看到一篇推荐Magi这个搜索引擎的新闻,对于这个搜索引擎是否好用咱们不予置评,但是我在这个搜索引擎上面发现了一个好玩的前端功能. 如上图,将鼠标浮动到学习来源上时,会展示一堆指引线. 本博客 ...
- 一个流行的网页动画JS库
animejs https://animejs.com/ Anime.js (/ˈæn.ə.meɪ/) is a lightweight JavaScript animation library wi ...
- 利用moment为基础,基于DOM实现一个多个倒计时同时进行的js库方便使用
moment非常强大,提供了很多时间方法的封装,项目需要一个小倒计时的功能,网上找了很多不合适,决定自己写一个,直接上代码 //定义一个立即执行的函数(function () { var Ticts= ...
- typescript+webpack构建一个js库
依赖说明 入口文件 tsconfig配置 webpack配置文件 webpack入口文件配置 webpack为typescript和less文件配置各自的loader webpack的output配置 ...
- 【转载】写一个js库需要怎样的知识储备和技术程度?
作者:小爝链接:https://www.zhihu.com/question/30274750/answer/118846177来源:知乎著作权归作者所有,转载请联系作者获得授权. 1,如何编写健壮的 ...
- 构建自己的js库
一.背景 web前端开发人员经常会用到一些现成的js库(框架).框架的使用增加了代码的模块化和可复用性,最主要的是屏蔽了浏览器之间差异性的实现,使得代码更加简洁,框架使用者只需要将注意力放在业务的实现 ...
- 仿照jquery封装一个自己的js库(二)
本篇为完结篇.主要讲述如何造出轮子的高级特性. 一. css方法的高级操作 先看本文第一部分所讲的dQuery css方法 //css方法 dQuery.prototype.css=function( ...
随机推荐
- Android 抽屉类SlidingDrawer的使用
比较简单,设置好SlidingDrawer控件的handle和content属性就可以了. android:content="@+id/content" android:ha ...
- UIPickerView自定义背景
#import <UIKit/UIKit.h> @interface MyPicker : UIPickerView { } @end -------------------------- ...
- c# 中的多线程和异步
前言: 1.异步和多线程有区别吗? 答案:多线程可以说是实现异步的一种方法方法,两者的共同目的:使主线程保持对用户操作的实时响应,如点击.拖拽.输入字符等.使主程序看起来实时都保持着等待用户响应的状态 ...
- 解决方案:将已存在的项目 添加到 tfs解决方案中的时候 出现:新项目不能成功加入源码控制
遇到此问题 可能是因为你的 解决方案文件 没有正确与 tfs服务器绑定导致的 解决方式是: 在打开任意一个源码文件的时候,打开 vs2013的 文件>> Go to File->So ...
- Web通过JS调用客户端
代码实现==> <html> <head> <script language="javascript"> function Run(str ...
- 算法的上帝——Donald E.Knuth(转)
开始介绍前先膜拜之~ 密尔沃基市,是美国威斯康辛州最大的城市.1938年1月10日,圣诞刚过不久,密尔沃基市民像往常一样平静地生活着.咖啡店里,有人在议论着罗斯 福总统的救市新政策,有人在议论着到底该 ...
- Jedis 连接redis超时
redis默认不允许远程连接 用vi打开Redis服务器的配置文件redis.conf ~ sudo vi /etc/redis/redis.conf #注释bind #bind 127.0.0.1 ...
- NeHe OpenGL教程 第三十一课:加载模型
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 设置session的生存时间
1.最有效的方法 修改php.ini中 #session的超时时间 session.gc_maxlifetime = 1440 2.通过php去修改这个值 $Lifetime = 3600; $S ...
- JAVA 一个特殊的类 Object
一个特殊的类Object:它是java中所有对象的直接或间接父类,根父类(基类),它里面定义的功能是所有对象都应该具备的(所有的类,都是继承这个类的) 记住:当定义一个新类时,没有指明要继承某类,它默 ...