测试Xpath对象是否为null / undefined

时间:2014-12-15 15:01:34

标签: javascript xpath

我试图从包含XML数据的变量中提取xpath结果。我试图提取的一些数据可能存在也可能不存在,因此我试图获得错误控制。示例:我的XML存储在变量data中。如果我使用以下代码获取Year的文本值,并且没有数据存在,则会引发控制台错误Uncaught TypeError: Cannot read property 'innerText' of null。这完全停止了JS并破坏了我的应用程序。

var year = document.evaluate('//Article/Journal/JournalIssue/PubDate/Year', $(data).get(0), null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue.innerText;

因此,如果XML数据实际包含Year

,我决定将其分解为文本
var yearobj = document.evaluate('//Article/Journal/JournalIssue/PubDate/Year', $(data).get(0), null, XPathResult.ANY_UNORDERED_NODE_TYPE, null)
if (yearobj !== null) {
     var year = yearobj.singleNodeValue.innerText;                     
}
else {
     year = '';
}

但是yearobj 即将出现,因此错误仍然存​​在。

我也尝试了if (typeof yearobj !== 'undefined') {,但也无效。

1 个答案:

答案 0 :(得分:1)

  

但是yearobj 即将出现null,因此错误仍然存​​在。

也许您找到了yearobj,但yearobj.singleNodeValue不是您所期望的

将其简化为检查yearobjsingleNodeValue的真实性

var year = '';
if (yearobj && yearobj.singleNodeValue) {
     year = yearobj.singleNodeValue.innerText;                     
}