XML,GPX解析器

2018-10-28 16:22 更新

XML,GPX解析器 -= 1.HTML部分

<!DOCTYPE html>
<html>
  <head>
  <body>
<button id = "coord" onclick= "getExent()"   value=''>點(diǎn)擊</button>
  <input type="file" id="fileId"  onchange="loadFile("fileId")" style="display:false">
<button type="button" onclick="OpenLoadFileWindow()">文件</button>
  </body>
</html>

2.js部分

方法:一

function OpenLoadFileWindow(){ 
    document.getElementById("fileId").click(); 
}
function loadFile(fileId) {
    var reader = readFileToString(fileId);//把上傳文件解析成String字符串;
        reader.onload = function(evt){ //讀取完文件之后會(huì)回來(lái)這里
            var fileString = evt.target.result; // 讀取文件內(nèi)容
            var xmlDoc =  readXMLString(fileString);
            readTarget(xmlDoc)
            // functName(xmlDoc);
        }
}
/**
*功能 獲取解析的XML中的數(shù)據(jù)
*@param fileId
*/
 function readTarget(xmlDoc){
    var elements = xmlDoc.getElementsByTagName("extensions");
    for (var i = 0; i < elements.length; i++) {
        var name = elements[i].getElementsByTagName("ogr:bridgeid")[0].firstChild.nodeValue;
        var ip = elements[i].getElementsByTagName("ogr:deptkey")[0].firstChild.nodeValue;  
        var geomX = elements[i].getElementsByTagName("ogr:橋梁經(jīng)度")[0].firstChild.nodeValue;
        var geomy = elements[i].getElementsByTagName("ogr:橋梁緯度")[0].firstChild.nodeValue;        
    }   
}
/**
*功能 把文件解析成UTF-8
*@param fileId
*/        
function readFileToString(fileId,functName){
    var objFile = document.getElementById(fileId);
    if(objFile.value == "") {
        alert("不能空");
    }
    console.log(objFile.files[0].size); // 文件字節(jié)數(shù)
    var files = $('#'+fileId).prop('files');//獲取到文件列表
    // var files = objFile.prop('files');//獲取到文件列表
    if(files.length == 0){
        alert('請(qǐng)選擇文件');
    }else{
        var reader = new FileReader();//新建一個(gè)FileReader
        reader.readAsText(files[0], "UTF-8");//讀取文件 
        return reader;
    }
}    
/**
*功能 解析xml字符串
*@param fileId
*/
function readXMLString(xmlString){
var xmlDoc=null;
//判斷瀏覽器的類(lèi)型
//支持IE瀏覽器 
if(!window.DOMParser && window.ActiveXObject){   //window.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){
        }
    }
}else if(window.DOMParser && document.implementation && document.implementation.createDocument){//支持Mozilla瀏覽器
    try{
        /* DOMParser 對(duì)象解析 XML 文本并返回一個(gè) XML Document 對(duì)象。
         * 要使用 DOMParser,使用不帶參數(shù)的構(gòu)造函數(shù)來(lái)實(shí)例化它,然后調(diào)用其 parseFromString() 方法
         * parseFromString(text, contentType) 參數(shù)text:要解析的 XML 標(biāo)記 參數(shù)contentType文本的內(nèi)容類(lèi)型
         * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一個(gè)。注意,不支持 "text/html"。
         */
        domParser = new  DOMParser();
        xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
    }catch(e){
    }
}
else{
    return null;
}
return xmlDoc;
}

方法:二


    
function OpenLoadFileWindow(){ 
    document.getElementById("fileId").click(); 
}
/**
*功能 獲取解析的XML中的數(shù)據(jù)
*@param fileId
*/
function loadFile(fileId) {
    var reader = readFileToString(fileId,readTarget);//把上傳文件解析成String字符串;
}
/**
*功能 獲取解析的XML中的數(shù)據(jù)
*@param fileId
*/
 function readTarget(xmlDoc){
    var elements = xmlDoc.getElementsByTagName("extensions");
    for (var i = 0; i < elements.length; i++) {
        var name = elements[i].getElementsByTagName("ogr:bridgeid")[0].firstChild.nodeValue;
        var ip = elements[i].getElementsByTagName("ogr:deptkey")[0].firstChild.nodeValue;  
        var geomX = elements[i].getElementsByTagName("ogr:橋梁經(jīng)度")[0].firstChild.nodeValue;
        var geomy = elements[i].getElementsByTagName("ogr:橋梁緯度")[0].firstChild.nodeValue;        
    }   
}
/**
*功能 把文件解析成UTF-8
*@param fileId
*@param functName回調(diào)函數(shù)
*/        
function readFileToString(fileId,functName){
    var objFile = document.getElementById(fileId);
    if(objFile.value == "") {
        alert("不能空");
    }
    console.log(objFile.files[0].size); // 文件字節(jié)數(shù)
    var files = $('#'+fileId).prop('files');//獲取到文件列表
    // var files = objFile.prop('files');//獲取到文件列表
    if(files.length == 0){
        alert('請(qǐng)選擇文件');
    }else{
        var reader = new FileReader();//新建一個(gè)FileReader
        reader.readAsText(files[0], "UTF-8");//讀取文件 
        reader.onload = function(evt){ //讀取完文件之后會(huì)回來(lái)這里
            var fileString = evt.target.result; // 讀取文件內(nèi)容
            var xmlDoc =  readXMLString(fileString);
            functName(xmlDoc);
        }
    }
}    
/**
*功能 解析xml字符串
*@param fileId
*/
function readXMLString(xmlString){
var xmlDoc=null;
//判斷瀏覽器的類(lèi)型
//支持IE瀏覽器 
if(!window.DOMParser && window.ActiveXObject){   //window.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){
        }
    }
}else if(window.DOMParser && document.implementation && document.implementation.createDocument){//支持Mozilla瀏覽器
    try{
        /* DOMParser 對(duì)象解析 XML 文本并返回一個(gè) XML Document 對(duì)象。
         * 要使用 DOMParser,使用不帶參數(shù)的構(gòu)造函數(shù)來(lái)實(shí)例化它,然后調(diào)用其 parseFromString() 方法
         * parseFromString(text, contentType) 參數(shù)text:要解析的 XML 標(biāo)記 參數(shù)contentType文本的內(nèi)容類(lèi)型
         * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一個(gè)。注意,不支持 "text/html"。
         */
        domParser = new  DOMParser();
        xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
    }catch(e){
    }
}
else{
    return null;
}
return xmlDoc;
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)