JavaScript 读取 xml 的方法: 使用 DOMParser 对象解析 xml 文本并返回一个 xml Document 对象. 然后调用 parseFromString() 方法读取.
JavaScript 读取 xml 文件:
- function loadXML(xmlFile){
- var xmlDoc=null;
- // 判断浏览器的类型
- // 支持 IE 浏览器
- if(!Windows.DOMParser && Windows.ActiveXObject){
- var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
- for(var i=0;i<xmlDomVersions.length;i++){
- try{
- xmlDoc = new ActiveXObject(xmlDomVersions[i]);
- break;
- }catch(e){
- }
- }
- }
- // 支持 Mozilla 浏览器
- else if(document.implementation && document.implementation.createDocument){
- try{
- /* document.implementation.createDocument('','',null); 方法的三个参数说明
- * 第一个参数是包含文档所使用的命名空间 URI 的字符串;
- * 第二个参数是包含文档根元素名称的字符串;
- * 第三个参数是要创建的文档类型 (也称为 doctype)
- */
- xmlDoc = document.implementation.createDocument('','',null);
- }catch(e){
- }
- }
- else{
- return null;
- }
- if(xmlDoc!=null){
- xmlDoc.async = false;
- xmlDoc.load(xmlFile);
- }
- return xmlDoc;
- }
JavaScript 读取 xml 字符串:
function loadXMLStr(xmlString){ var xmlDoc=null; // 判断浏览器的类型 // 支持 IE 浏览器 if(!Windows.DOMParser && Windows.ActiveXObject){ //Windows.DOMParser 判断是否是非 IE 浏览器 var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM']; for(var i=0;i<xmlDomVersions.length;i++){ try{ xmlDoc = new ActiveXObject(xmlDomVersions[i]); xmlDoc.async = false; xmlDoc.loadXML(xmlString); //loadXML 方法载入 xml 字符串 break; }catch(e){ } } } // 支持 Mozilla 浏览器 else if(Windows.DOMParser && document.implementation && document.implementation.createDocument){ try{ /* DOMParser 对象解析 xml 文本并返回一个 xml Document 对象. * 要使用 DOMParser, 使用不带参数的构造函数来实例化它, 然后调用其 parseFromString() 方法 * parseFromString(text, contentType) 参数 text: 要解析的 xml 标记 参数 contentType 文本 * 的内容类型 * 可能是 "text/xml" ,"application/xml" 或 "application/xhtml+xml" 中的一个. * 注意, 不支持 "text/html". */ domParser = new DOMParser(); xmlDoc = domParser.parseFromString(xmlString, 'text/xml'); }catch(e){ } } else{ return null; } return xmlDoc; }
HTML 代码测试:
<script type="text/javascript"> Windows.onload = function(){ var text = document.getElementById('aaa').value; var xmldoc=loadXMLStr(text); var elements = xmldoc.getElementsByTagName("major"); for (var i = 0; i <elements.length; i++) { var value = elements[i].getElementsByTagName("class")[0].firstChild.nodeValue; alert(value); } } </script> <textarea id="aaa"> <IS> <year time="2014"> <major name="Computer Science"> <class>1401</class> <class>1402</class> <class>1403</class> <class>1404</class> </major> <major name="Communication Engineering"> <class>1405</class> <class>1406</class> <class>1407</class> <class>1408</class> </major> </year> <year time="2013"> <major name="Computer Science"> <class>1301</class> <class>1302</class> <class>1303</class> <class>1304</class> </major> <major name="Communication Engineering"> <class>1305</class> <class>1306</class> <class>1307</class> <class>1308</class> </major> </year> </IS> </textarea>
来源: http://www.css88.com/qa/javascript/11126.html