jQuery parseXML:检测错误

时间:2013-12-01 02:53:44

标签: javascript jquery xml

对于要求用户输入xml的实用程序(例如,从本地磁盘上的文件中输入),可以使用jQuery的parseXML将字符串转换为XML文档。这将适用于格式良好的XML,但如果XML格式不正确,则会无声地失败。

例如:

xmltest=' <dog><arf>33 </arf></dog>'; 
xmlDoc = $.parseXML( xmltest) ;
xml = $(xmlDoc );
achild=xml.children(0).children(0);
alert('Content of child 1= '+achild.html(); 

将正确屈服:孩子的内容1 = 33

然而

xmltest=' <dog><arf>33 </arf1></dog>';
xmlDoc = $.parseXML( xmltest) ;
xml = $(xmlDoc );
...

将无声地失败。

更确切地说;消息显示在控制台中。例如,Firefox显示:

[21:08:47.731] mismatched tag. Expected: </arf> 
[21:08:47.731] Error: Invalid XML:<dog><arf>33 </arf1></dog>

即和Chrome报告类似的消息。  

问题:是否有任何方式javascript或jquery可以检测到此失败并访问这些错误消息?目标是告诉用户他的XML文件可能有什么样的问题。  

请注意,我正在玩这个的一个原因是解决Chrome无法使用$ .get读取本地xml文件(是的是的我知道这是一个安全的事情,但如果你想要它也是一个痛苦的问题使用XML文件存储大量属性信息,并且不希望从命令行运行chrome。那么IE呢?)。  

使用try和catch有点帮助...:  

xmltest=' <dog><arf>33 </arf1></dog>';
try {
    xmlDoc = $.parseXML( xmltest) ;
} 
catch(e) {
    wow='';
    for (m in e) wow=wow+' : '+m+'='+e[m];
    alert(e+':error== '+wow); return 1;
}

Firefox中的收益率:

Error: Invalid XML:   <dog><arf>33 </arf1></dog> :error==  : fileName=file:///D:/docs/carCosts/jquery-1.10.2.js : lineNumber=516 : columnNumber=2

0 个答案:

没有答案