js解析xml,当其中字段中的内容为空的时候报错,而且整个的解析因此而失败,怎样解决
比如:js代码
function NewInfoAction()
{
var xmlDom; //XML DOM object
var xmlFile="../IgrsDevice.xml"; //xml file name
var ieFlag="ie"; //default
var isSafari = navigator.userAgent.indexOf('AppleWebKit') != -1;
var isChrome = navigator.userAgent.indexOf('Chrome') != -1;
if(isSafari||isChrome||!window.event) ieFlag="other"
//----------------------------start: create XML Dom-----------------------------------------
loadXML = function(fileRoute){
xmlDoc=null;
if (window.ActiveXObject){
xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
xmlDoc.async=false;
xmlDoc.load(fileRoute);
}
else if (document.implementation && document.implementation.createDocument){
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET",fileRoute,false);
xmlhttp.send(null);
var xmlDoc = xmlhttp.responseXML;
}
else {xmlDoc=null;}
return xmlDoc;
}
xmlDom=loadXML(xmlFile);
//----------------------------End: create XML Dom-----------------------------------------
//----------------------------start: read XML Dom-----------------------------------------
var aName,aIp,aDevicetype,aUsername,aPassword,aRootdir;
if(ieFlag=="other"){//NOT MS IE
var newsList2=xmlDom.getElementsByTagName("Item");
for(var j=0;j <newsList2.length;j++){
try{
aName = newsList2[j].getElementsByTagName("sname")[0].childNodes[0].nodeValue; //
aIp = newsList2[j].getElementsByTagName("ip")[0].childNodes[0].nodeValue;
aDevicetype = newsList2[j].getElementsByTagName("devicetype")[0].childNodes[0].nodeValue;
aUsername = newsList2[j].getElementsByTagName("username")[0].childNodes[0].nodeValue;
aPassword = newsList2[j].getElementsByTagName("password")[0].childNodes[0].nodeValue;
aRootdir = newsList2[j].getElementsByTagName("rootdir")[0].childNodes[0].nodeValue;
}catch(e2)
{
alert("解析错误");
}
}
xml内容:<ItemList>
<Item>
<sname>jjj</sname>
<ip>192.168.0.1</ip>
<devicetype>电脑</devicetype>
<username>(null)</username>
<password>(null)</password>
<rootdir>(null)</rootdir>
</Item>
</ItemList>当username或者password字段中的(null)什么都不写时,就会catch报错,但是sname字段中有内容,我想要sname中的内容怎么办啊
比如:js代码
function NewInfoAction()
{
var xmlDom; //XML DOM object
var xmlFile="../IgrsDevice.xml"; //xml file name
var ieFlag="ie"; //default
var isSafari = navigator.userAgent.indexOf('AppleWebKit') != -1;
var isChrome = navigator.userAgent.indexOf('Chrome') != -1;
if(isSafari||isChrome||!window.event) ieFlag="other"
//----------------------------start: create XML Dom-----------------------------------------
loadXML = function(fileRoute){
xmlDoc=null;
if (window.ActiveXObject){
xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
xmlDoc.async=false;
xmlDoc.load(fileRoute);
}
else if (document.implementation && document.implementation.createDocument){
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET",fileRoute,false);
xmlhttp.send(null);
var xmlDoc = xmlhttp.responseXML;
}
else {xmlDoc=null;}
return xmlDoc;
}
xmlDom=loadXML(xmlFile);
//----------------------------End: create XML Dom-----------------------------------------
//----------------------------start: read XML Dom-----------------------------------------
var aName,aIp,aDevicetype,aUsername,aPassword,aRootdir;
if(ieFlag=="other"){//NOT MS IE
var newsList2=xmlDom.getElementsByTagName("Item");
for(var j=0;j <newsList2.length;j++){
try{
aName = newsList2[j].getElementsByTagName("sname")[0].childNodes[0].nodeValue; //
aIp = newsList2[j].getElementsByTagName("ip")[0].childNodes[0].nodeValue;
aDevicetype = newsList2[j].getElementsByTagName("devicetype")[0].childNodes[0].nodeValue;
aUsername = newsList2[j].getElementsByTagName("username")[0].childNodes[0].nodeValue;
aPassword = newsList2[j].getElementsByTagName("password")[0].childNodes[0].nodeValue;
aRootdir = newsList2[j].getElementsByTagName("rootdir")[0].childNodes[0].nodeValue;
}catch(e2)
{
alert("解析错误");
}
}
xml内容:<ItemList>
<Item>
<sname>jjj</sname>
<ip>192.168.0.1</ip>
<devicetype>电脑</devicetype>
<username>(null)</username>
<password>(null)</password>
<rootdir>(null)</rootdir>
</Item>
</ItemList>当username或者password字段中的(null)什么都不写时,就会catch报错,但是sname字段中有内容,我想要sname中的内容怎么办啊
<?xml version="1.0" encoding="gb2312"?>