这篇文章主要介绍了 javascript 解析 XML 文档和 XML 字符串的方法和具体的代码解析,有需要的小伙伴可以参考下。
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
之前写过一篇 《使用 jquery 解析 XML 的方法》链接是 {aa0aa},上篇文章详细解释了 jQuery 与字符串互相转换的方法 , 这里着重论述 javascript 操作 xml。
总代码如下:
- var XMLHttp = null;
- if (window.XMLHttpRequest) { //现代浏览器
- XMLHttp = new XMLHttpRequest();
- } else if (window.ActiveXObject) {
- XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE5/IE6
- }
- if (XMLHttp !== null) {
- XMLHttp.onreadystatechange = function() {
- if (XMLHttp.readyState === 4) {
- if (XMLHttp.status === 200 || XMLHttp.status === 304) {
- // var XMLDom = XMLHttp.responseXML; //解析XML文档
- var XMLDoc = XMLHttp.responseText; //解析XML字符串
- var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");
- //异步代码写这里
- console.log(XMLDom);
- console.log("world"); //后出现world
- }
- }
- };
- XMLHttp.open("get", "test1.xml", true);
- XMLHttp.send();
- //非异步代码写这里
- console.log("hello"); //先出现hello
- }
第一步,创建 XMLHTTPREQUEST:
- var XMLHttp = null;
- if (window.XMLHttpRequest) { //现代浏览器
- XMLHttp = new XMLHttpRequest();
- } else if (window.ActiveXObject) {
- XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE5/IE6
- }
第二步,检测 ONREADYSTATECHANGE(非异步不需要):
- if (XMLHttp !== null) {
- XMLHttp.onreadystatechange = function() {
- if (XMLHttp.readyState === 4) {
- if (XMLHttp.status === 200 || XMLHttp.status === 304) {
- //异步代码写这里
- }
- }
- };
- XMLHttp.open("get", "test1.xml", true);
- XMLHttp.send();
- //非异步代码写这里
- }
第三步,解析 XML 文档或字符串(异步):
- XMLHttp.onreadystatechange = function() {
- if (XMLHttp.readyState === 4) {
- if (XMLHttp.status === 200 || XMLHttp.status === 304) {
- // var XMLDom = XMLHttp.responseXML; //解析XML文档
- var XMLDoc = XMLHttp.responseText; //解析XML字符串
- var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");
- //异步代码写这里
- console.log(XMLDom);
- }
- }
- };
第四步,解析 XML 文档或字符串(非异步):
- if (XMLHttp !== null) {
- // XMLHttp.onreadystatechange = function() {
- // if (XMLHttp.readyState === 4) {
- // if (XMLHttp.status === 200 || XMLHttp.status === 304) {}
- // }
- // };
- XMLHttp.open("get", "test1.xml", false);
- XMLHttp.send();
- //非异步代码写这里
- // var XMLDom = XMLHttp.responseXML; //解析XML文档
- var XMLDoc = XMLHttp.responseText; //解析XML字符串
- var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");
- //异步代码写这里
- console.log(XMLDom);
- }
来源: http://www.phperz.com/article/17/0221/266905.html