因为自己在开发过程中总是要写一大堆的 new ActiveX...之类的代码
还要写一些相关的检查状态的代码
所以就萌生出做一个自定义类
这样可以用来获取需要的 xml dom
这样拿来就可以用了
嘿嘿
///
/// 获取 xml 对象类
/// guanxuejun@126.com
/// QQ:5360375
///
/// 根据请求一个 Url/给定一个 string 来获取一个 xml 的方法
/// 之所以封装起来是不想每次都写这一大堆代码 :-)
/// Public XMLDocumentClass function ClassIPSXmlDocumnet()
///
function ClassIPSXmlDocumnet()
...{
/// 属性
this.xmlVersion = 3; /// xml版本
this.xmlVersionString = "Microsoft.XMLDOM"; /// xml版本
this.type = ""; /// 类别
this.url = ""; /// url 地址
this.string = ""; /// xml string 属性
this.instanceName = "oIPSXml"; /// 实例名
this.bXmlDocumnetCreated = false; /// 是否已经创建 xml document
this.errorCode = null; /// 错误代码
this.errorReason = ""; /// 错误描述
/// 方法
/// 初始化
this.getXml = ClassIPSXmlDocumnet_getXml;
}
///
/// 获取 XMl 对象
/// ::sType 对象类别 ["url"||"string"]
/// ::sParamValue
/// ::iVersion [3|4]
///
function ClassIPSXmlDocumnet_getXml(sParamValue, sType, iVersion)
...{
if (sParamValue.length == 0)
...{
this.errorCode = -1000;
this.errorReason = "getXml()方法的参数 sParamValue 未设置。";
return null;
}
if (sType.length == 0)
...{
this.errorCode = -2000;
this.errorReason = "getXml()方法的参数 sType 未设置。";
return null;
}
if (isNaN(iVersion))
...{
this.errorCode = -3000;
this.errorReason = "getXml()方法的参数 iVersion 用来定义创建 xml 对象的版本,应当是数值 1 或者 2。";
return null;
}
else
...{
iVersion = parseInt(iVersion);
}
this.xmlVersion = iVersion;
switch(this.xmlVersion)
...{
case 3:
this.xmlVersionString = "Microsoft.XMLDOM";
break;
case 4:
this.xmlVersionString = "Msxml2.DOMDocument.4.0";
break;
default:
this.errorCode = -3000;
this.errorReason = "getXml()方法的参数 iVersion 用来定义创建 xml 对象的版本,应当是数值 1 或者 2。";
return null;
break;
}
/// 构建 xml 对象
var iInnerXmlErrorCode = null;
var sInnerXmlReason = "";
var bInnerXmlCreated = false;
var oInnerXml = new ActiveXObject(this.xmlVersionString);
oInnerXml.async = false; //同步传输
oInnerXml.onreadystatechange = function()
...{
iInnerXmlErrorCode = oInnerXml.parseError.errorCode;
sInnerXmlReason = oInnerXml.parseError.reason;
if (oInnerXml.parseError.errorCode == 0)
...{
if (oInnerXml.readyState == 4)
...{
sInnerXmlReason = "加载成功!";
bInnerXmlCreated = true;
}
}
}
/// 分析加载方式
this.type = sType.toLowerCase();
switch(this.type)
...{
case "url":
this.url = sParamValue;
oInnerXml.load(this.url);
break;
case "string":
this.string = sParamValue;
oInnerXml.loadXML(this.string);
break;
default:
this.errorCode = -4000;
this.errorReason = "getXml()方法的参数 sType 设置错误,目前只能设置为 url(给定 url 地址获取 xml)或者 string(给定 xml string 地址获取 xml)。";
return null;
break;
}
/// 返回 xml 对象
this.bXmlDocumnetCreated = bInnerXmlCreated;
this.errorCode = iInnerXmlErrorCode;
this.errorReason = sInnerXmlReason;
if (this.bXmlDocumnetCreated)
...{
return oInnerXml;
}
else
...{
return null;
}
}

/// 调用页面只需要运行 oIPSXml.getXml(sParamValue, sType, iVersion) 方法即可获取 xml 对象
/// var oIPSXml;
/// oIPSXml = new ClassIPSXmlDocumnet();
/// oIPSXml.instanceName = "oIPSXml";
184

被折叠的 条评论
为什么被折叠?



