一个构建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( ...
随机推荐
- junit类找不到的问题解决
1. Class not found *******java.lang.ClassNotFoundException: ******* at java.net.URLClassLoader$1.ru ...
- 【spring】non-compatible bean definition of same name and class
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected excep tion parsing XML do ...
- 【转】ODBC、OLE DB、 ADO的区别
一.ODBC ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂商和 ...
- discuz!3 二次开发C#学者
PHP入门,从搞数据库开始: 大致看了以下PHP还是很简单的 比如链接数据库,就这么几行,比asp.net简单的多,就是需要自己搞数据的显示,需要精通HTML和代码生成技术: <?php $co ...
- SPOJ #429 Simple Numbers Conversion
This is simply a human work simulation - exactly reproducing how you do it by hand. Nothing special. ...
- lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】
转自:http://blog.csdn.net/pukuimin1226/article/details/17558247 添加:2013-12-25 更新:2013-12-26 新增分页功能. ...
- 剑指offer系列41---数字在数组中出现的次数
[题目]统计一个数字在排序数组中出现的次数. package com.exe9.offer; /** * [题目]统计一个数字在排序数组中出现的次数. * @author WGS * */ publi ...
- (转)C# wnform 请求http ( get , post 两种方式 )
本文转载自:http://www.cnblogs.com/hailexuexi/archive/2011/03/04/1970926.html 1.Get请求 string strURL = &quo ...
- 51nod 1150 Logarithm
题目来源: Ural 1318 给出n个互不相等的整数A[0] - A[n-1],选A[i]同A[j]进行异或运算(结果都 > 0无符号),对结果取lg(以10为底)并取整后记为L[i,j],求 ...
- bzoj3743 Kamp
Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举行聚会. 聚会结束后需要一辆车从举行聚会的这点出发 ...