我试图从包含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') {
,但也无效。
答案 0 :(得分:1)
但是
yearobj
不即将出现null
,因此错误仍然存在。
也许您找到了yearobj
,但yearobj.singleNodeValue
不是您所期望的
将其简化为检查yearobj
和singleNodeValue
的真实性
var year = '';
if (yearobj && yearobj.singleNodeValue) {
year = yearobj.singleNodeValue.innerText;
}