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中的内容怎么办啊

解决方案 »

  1.   

    试下这样newsList2[j].getElementsByTagName("XXX")[0].childNodes[0].firstChild.nodeValue;
      

  2.   

    js中,如果某个对象a为空,那么a==undefined为true,先做下判断再a.value呢?
      

  3.   

    里面有中文啊,要加一句啊!
    <?xml version="1.0" encoding="gb2312"?> 
      

  4.   

    建议楼主放弃,因为js没有办法处理,只能读,独到空的就有异常,怎样的话不可能没有问题,比如你去掉try那要的话有异常,下面就不能执行了