javascript xml解析代码

function WEIPXml(_url) {
 /** XML文件的URL */
 this.url = _url;
 /** XML文档对象 */
 this.oDocument = null;
 /** XMLHTTP对象 */
 this.oXmlHttp = null;

 /** 浏览器类型 */
 this.isNS = isNetscape;
 this.isIE = isIE;

 /**
  * 获取XmlHttp对象
  */
 this.getXmlHttp = function() {
  if (this.isIE) {
   try {
    this.oXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
    try {
     this.oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
     // nothing
    }
   }
  } else if (window.XMLHttpRequest) {
   this.oXmlHttp = new XMLHttpRequest();
   //if (this.oXmlHttp.overrideMimeType) {
   // this.oXmlHttp.overrideMimeType("text/xml");
   //}
  }
 }
 
 /**
  * 装载XML文件
  */
 this.load = function(_content, _isAsynchronous, _mothed, _xmlUrl) {
  _isAsynchronous = (!_isAsynchronous) ? false : true;
  if (!this.oXmlHttp) {
   this.getXmlHttp();
  }
  if (_xmlUrl) {
   this.url = _xmlUrl;
  }
  if (!_mothed) {
   _mothed = 'POST';
  }
  this.oXmlHttp.open(_mothed, this.url, _isAsynchronous);
  if (_mothed == 'POST') {
   this.oXmlHttp.setRequestHeader('Content-Type',
             'application/x-www-form-urlencoded');
  }
  if (_content) {
   this.oXmlHttp.send(_content);
  } else {
   this.oXmlHttp.send(null);
  }
  if (!_isAsynchronous) {
   if (this.oXmlHttp.status == 200) {
    this.oDocument = this.oXmlHttp.responseXML;
    return true;
   } else {
    alert('XML 请求错误: ' + this.oXmlHttp.statusText
      + ' (' + this.oXmlHttp.status + ')');
   }
  } else {
   this.oXmlHttp.onreadystatechange = function() {
    switch (this.oXmlHttp.readyState) {
    case 0 : // 未初始化
     this.onUninitialized(); break;
    case 1 : // 装载中
     this.onLoading(); break;
    case 2 : // 装载完毕
     this.onLoaded(); break;
    case 3 : // 交互中
     this.onInteractive(); break;
    case 4 : // 完成
     if (this.oXmlHttp.status == 200) {
      this.oDocument = this.oXmlHttp.responseXML;
      this.onComplete();
     } else {
      alert('XML 请求错误: ' + this.oXmlHttp.statusText
          + ' (' + this.oXmlHttp.status + ')');
     }
     break;
    }
   }.bind(this);
  }
  return false;
 }
 
 this.onUninitialized = function() {}; // 未初始化
 this.onLoading   = function() {}; // 装载中
 this.onLoaded   = function() {}; // 装载完毕
 this.onInteractive  = function() {}; // 交互中
 this.onComplete   = function() {}; // 完成

 /**
  * 提取节点数组
  */
 this.selectNodes = function(xpath) {
  if (this.isIE) {
   return this.oDocument.selectNodes(xpath);
  } else {
   var aNodeArray = new Array();
   var xPathResult = this.oDocument.evaluate(xpath, this.oDocument,
     this.oDocument.createNSResolver(this.oDocument.documentElement),
     XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
   if (xPathResult) {
    var oNode = xPathResult.iterateNext();
    while (oNode) {
     aNodeArray[aNodeArray.length] = oNode;
     oNode = xPathResult.iterateNext();
    }
   }
   return aNodeArray;
  }
 }

 /**
  * 提取单个节点
  */
 this.selectSingleNode = function(xpath) {
  if (this.isIE) {
   return this.oDocument.selectSingleNode(xpath);
  } else {
   var xPathResult = this.oDocument.evaluate(xpath, this.oDocument,
     this.oDocument.createNSResolver(this.oDocument.documentElement), 9, null);
   if ( xPathResult && xPathResult.singleNodeValue ) {
    return xPathResult.singleNodeValue;
   } else {
    return null;
   }
  }
 }

 /**
  * 获取节点text值
  */
 this.getText = function(xpath) {
  var oNode = (typeof(xpath) == "string") ? this.selectSingleNode(xpath) : xpath;
  if (oNode) {
   return (isIE) ? oNode.text : oNode.textContent;
  } else {
   return this.oXmlHttp.responseText;
  }
 }

 /**
  * 获取节点属性值
  */
 this.getAttribute = function(xpath, attributeName) {
  var oNode = (typeof(xpath) == "string") ? this.selectSingleNode(xpath) : xpath;
  if (oNode) {
   var oAttribute = oNode.attributes.getNamedItem(attributeName);
   return (oAttribute) ? oAttribute.value : null;
  } else {
   return null;
  }
 }
}

Function.prototype.bind = function() {
 var __method = this, args = $A(arguments), object = args.shift();
 return function() {
  return __method.apply(object, args.concat($A(arguments)));
 }
}

var $A = Array.from = function(iterable) {
 if (!iterable) return [];
 if (iterable.toArray) {
  return iterable.toArray();
 } else {
  var results = [];
  for (var i = 0; i < iterable.length; i++) {
   results.push(iterable[i]);
  }
  return results;
 }
}

时间: 2024-11-11 19:15:36

javascript xml解析代码的相关文章

在线等一段XML解析代码

问题描述 在客户端程序中用HttpWebRequest从网站获得如下一串XML串:stringstrXML="<classInfo><classname>一三班</classname><teacher>刘洪</teacher></classinfo><score><studname>张三</studname><chinese>95</chinese><engl

javascript中XMLDOM和parseXML解析xml实现代码

通常我们有如下的需求: 第一步: 我们可以定义一个方法:(只用有人调用,就直接返回解析器)    代码如下 复制代码 function parseXML(file){    try //Internet Explorer---ie浏览器的解析器创建方式如下:    {     xmlDoc = new ActiveXObject("Microsoft.XMLDOM");    }    catch (e) {     try //Firefox, Mozilla, Opera, etc

原生javascript实现解析XML文档与字符串_javascript技巧

之前写过一篇 <使用jquery解析XML的方法>链接是http://www.jb51.net/article/54842.htm,上篇文章详细解释了jQuery 与字符串互相转换的方法 ,这里着重论述javascript操作xml. 总代码如下: var XMLHttp = null; if (window.XMLHttpRequest) { //现代浏览器 XMLHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) {

JavaScript预解析及相关技巧分析_javascript技巧

本文实例讲述了JavaScript预解析及相关技巧.分享给大家供大家参考,具体如下: 变量 同样,以这两个小例子的错误对比提示开始. alert(y1); //代码段1 var y1 = 'dddd'; alert(y2); //代码段2 // alert(typeof y2); y2 = 'xxxxx'; 先思考一下,为什么一个会提示 undefined , 一个却抛出变量未定义的错..先看JavaScript的解析过程. javascript在执行过程之前,会做一件事件"预解析".

Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)_javascript技巧

复制代码 代码如下: //导入js文件 function getResult(url, ready) { var xmlHttp; var r = function() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //alert(isIE); var xmlstr; var xmldoc; var isIE = !!(window.attachEvent && !window.opera); if (isIE)

使用jquery解析XML示例代码_jquery

xml文件结构:books.xml <?xml version="1.0" encoding="UTF-8"?> <root> <book id="1"> <name>深入浅出extjs</name> <author>张三</author> <price>88</price> </book> <book id="

在java中使用dom4j解析xml(示例代码)_java

虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: 复制代码 代码如下: <?xml version="1.0" encoding=&quo

PHP XML数据解析代码[json,parser函数]

 代码如下 复制代码 //xml string $xml_string="<?xml version='1.0'?> <users> <user id='398'> <name>Foo</name> <email>foo@bar.com</name> </user> <user id='867'> <name>Foobar</name> <email>f

用xml解析word文档,怎样解析,求思路,求代码,以及文档中图片和公式的解析

问题描述 用xml解析word文档,怎样解析,求思路,求代码,以及文档中图片和公式的解析 用xml解析word文档,怎样解析,求思路,求代码,以及文档中图片和公式的解析,请问哪位大神做过??? 解决方案 需求是什么呢?用什么语言,你说的xml解析word文档是什么意思呢? java里面对word文档的操作有POI工具包可以使用.