当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JavaScript XML操作 封装类

Javascript
很多人都是用下面的js刷新站IP和PV
javascript仿126邮箱TAB切换效果
js右下角弹出窗口,点击可关闭效果
javascript使用window.name解决跨域问题
DIV层之拖动、关闭、打开效果代码
Javascript条件判断使用小技巧总结
javascript获取不重复的随机数的方法比较
Firefox下设为主页的JavaScript代码
JavaScript编制留言簿程序代码
javascript表格随机排序代码
javascript一些不错的函数脚本代码
javascript之textarea打字机效果提示代码推荐
js实现的类似QQ的等级的代码
js检查是否全是中文
[原创]js判断是否有中文的脚本_js判断中文方法集合
js判断输入是否中文,数字,身份证等等js函数集合
js直接编辑当前cookie的脚本
jquery 必填项判断表单是否为空的方法
javascript高亮效果的二种实现方法
JavaScript基本入门语法集合

Javascript 中的 JavaScript XML操作 封装类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 262 ::
收藏到网摘: n/a

最近研究XML 用JavaScript写了一个简单的XML读取的操作类发给大家分享一下 可兼容 IE 火狐 Safari Chrome 6月30日下午 新修改了一下
复制代码 代码如下:

function XMLObject()
{
this.isIE=true;
if (window.ActiveXObject){isIE=true;}else{isIE=false;}
var node_xml;
var xmlDoc;
if (isIE){
xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
}
else{
if (document.implementation && document.implementation.createDocument){
xmlDoc = document.implementation.createDocument("","",null);
}
}
xmlDoc.async = false;
xmlDoc.resolveExternals = false;
xmlDoc.validateOnParse = false;
xmlDoc.preserveWhiteSpace = true;
//从字符串创建XML对象(XML字符串)
this.LoadXMLForString=function(XMLStr)
{
if(isIE)
{
xmlDoc.loadXML(XMLStr);
}
else
{
var oParser = new DOMParser();
xmlDoc = oParser.parseFromString(XMLStr,"text/xml");
}
}
//从外部文件创建XML文件(文件路径)
this.getXMLForURL=function(url)
{
//xmlDoc.load(url);
if (isIE){
xmlDoc.load(url);
}
else
{
xmlDoc = getXML(url).responseXML;
}
}
//获得节点字节点
this.getXMLArray=function (name) {
var keys = name.split('.');
var node = xmlDoc.documentElement; // 得到根节点
var rtn = new Array();
var n = 0;
for(var i=0; i<keys.length; i++) {
var childs = node.childNodes; // 得到子节点
var key = keys[i];
for(var k=0; k<childs.length; k++) {
var child = childs[k];
if(child.nodeName == key) { // 判断子节点是否符合
if(i == keys.length-1) {
rtn[n] = child;
n++;
} else {
node = child;
break;
}
}
}
}
node_xml=rtn;
return rtn;
}
//获得节点内容
this.getNodeValue=function(name)
{
return this.getValue(xmlDoc,name);
}
//根据节点获得节点下子节点内容
this.getValue=function(node, name)
{
var keys = name.split('.');
for(var i=0; i<keys.length; i++)
{
var childs = node.childNodes; // 得到子节点
var key = keys[i];
for(var k=0; k<childs.length; k++)
{
var child = childs[k];
if(child.nodeName == key)
{ // 判断子节点是否符合
if(child.childNodes.length == 1)
{
// 如果没有字节点,返回值
if(!window.ActiveXObject)
{
return childs[k].textContent;
}
else
{
return childs[k].text
}
}
else
{
// 还有子节点,继续分析
node = child;
break;
}
}
}
}
return "";
}
function GetXMLHTTP()
{
var xmlhttp;
if (window.ActiveXObject){
try{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
}else if (window.XMLHttpRequest)
{xmlhttp=new XMLHttpRequest();}
return xmlhttp;
}
function getXML(url){
var xmlHttp=GetXMLHTTP();
if (xmlHttp!=null){
xmlHttp.open("GET",url,false);
xmlHttp.send(null);
}else{
alert("Your browser does not support XMLHTTP.11");
return false;
}
return xmlHttp;
}
}

调用方法DEMO
复制代码 代码如下:

var strXML="<?xml version='1.0' encoding='utf-8'?><ekuy><user><name><cnname>小猪</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>";
var XMLObj=new XMLObject();
XMLObj.LoadXMLForString(strXML)
//XMLObj.getXMLForURL("test.xml");
var list = XMLObj.getXMLArray( 'user');//获得节点
document.write(XMLObj.getNodeValue('ekuy.user.name.cnname'));//直接获得节点内容
//循环节点获得节点下子节点内容
for(var i=0; i<list.length; i++) {
var obj = list[i];
document.write(XMLObj.getValue(obj, 'name.cnname'));
document.write(XMLObj.getValue(obj, 'age'));
document.write('<br\/>');
}

呵呵 写的不怎样 大家见笑 非常简单的功能