JS解析XML文件(跨浏览器)

来源:互联网 发布:汉朝 知乎 编辑:程序博客网 时间:2024/05/17 05:12

问题描述:

对指定xml文件进行解析,并显示解析出的内容。(给一个指定ip查询是否在xml文件中的ip范围内)

xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?><AzurePublicIpAddresses xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <Region Name="europewest">    <IpRange Subnet="40.112.124.0/24" />    <IpRange Subnet="65.52.128.0/19" />    <IpRange Subnet="94.245.97.0/24" />    <IpRange Subnet="104.47.169.0/24" />    <IpRange Subnet="104.214.240.0/24" />    <IpRange Subnet="137.116.192.0/19" />    <IpRange Subnet="168.63.0.0/19" />    <IpRange Subnet="168.63.96.0/20" />
  </Region></AzurePublicIpAddresses>

JS代码:

function loadXMLDoc(dname) {try //Internet Explorer  {xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async=false;xmlDoc.load(dname);  }catch(e)  {  try //Firefox, Mozilla, Opera, etc.    {  xmlDoc=document.implementation.createDocument("","",null);  xmlDoc.async=false;  xmlDoc.load(dname);    }  catch(e) {//chrome  try {var xmlhttp=new window.XMLHttpRequest();xmlhttp.open("GET",dname,false);xmlhttp.send(null);xmlDoc=xmlhttp.responseXML.documentElement;}  catch(e){alert("error")}  }  }return xmlDoc;}function Cloud_Platform(ip){var answer="非云平台";xmlDoc=loadXMLDoc('../../assets/ip_range/Azure_ip-ranges.xml');x=xmlDoc.getElementsByTagName('Region');for (i=0;i<x.length;i++){var region=x[i].getAttribute("Name");item=x[i].getElementsByTagName('IpRange');for(j=0; j<item.length; j++){ip_range=item[j].getAttribute("Subnet");if(Get_IP_Range(ip_range, ip)==true){answer=region+" Azure";document.getElementById("ip_location").innerText=answer}}}}function Get_IP_Range(ip_cidr, ip)//eg:172.10.10.0/15 172.10{var endip=['255', '255', '255', '255'];var mid=ip_cidr.split('/');var net=mid[0];//eg:172.10.10.0var mask=parseInt(mid[1]);//eg:15var ipsplit=net.split('.');if(mask%8==0){for(var i=0; i<(mask/8); i++)endip[i]=ipsplit[i];}else{for(var i=0; i<Math.floor((mask/8)); i++)endip[i]=ipsplit[i];endip[Math.floor(mask/8)]=""+(parseInt(ipsplit[Math.floor(mask/8)])+Math.pow(2,(8-mask%8-1)));}var aaa=ipToInt(ip.split('.'));var bbb=ipToInt(ipsplit);var ccc=ipToInt(endip);if( aaa>=bbb  && aaa<=ccc)return true;else return false;}function ipToInt(IP){return parseInt(IP[0])*256*256*256+parseInt(IP[1])*256*256+parseInt(IP[2])*256+parseInt(IP[3]);}

原创粉丝点击