XML解析异常:MonthDataLoaded返回NaN,YearDataLoaded取值正常
解决XML中MonthDataLoaded返回NaN的问题
咱们一步步排查最可能的原因,应该很快能搞定:
1. 先检查类型转换的坑(最常见!)
YearDataLoaded的值是数字2018,如果你用了parseInt()或者Number()这类强制转数字的方法去处理MonthDataLoaded的Apr,那必然会得到NaN——毕竟"Apr"不是数字啊!
举个反例,如果你之前的代码是这样的:
const year = parseInt(xmlDoc.querySelector("YearDataLoaded").textContent); // 正常拿到2018 const month = parseInt(xmlDoc.querySelector("MonthDataLoaded").textContent); // 这里直接返回NaN!
修正也很简单,直接取文本内容就行,不用转数字:
const month = xmlDoc.querySelector("MonthDataLoaded").textContent.trim(); // 就能拿到"Apr"了
2. 确认XML里的标签结构和拼写
你提供的XML片段里没看到MonthDataLoaded和YearDataLoaded标签,先确认完整XML里这个标签是不是真的存在:
- 有没有拼写错误?比如大小写不一致(比如写成
monthDataLoaded或者Monthdataloaded) - 是不是嵌套在某个子节点里?比如可能结构是
<DataLoaded><YearDataLoaded>2018</YearDataLoaded><MonthDataLoaded>Apr</MonthDataLoaded></DataLoaded>,那你用选择器就得写DataLoaded > MonthDataLoaded,而不是直接找MonthDataLoaded
3. 先打印原始内容排查
如果上面两点都没问题,你可以先打印标签的原始内容,确认解析器能不能正确拿到元素:
const monthElement = xmlDoc.querySelector("MonthDataLoaded"); console.log(monthElement); // 先看元素是否存在 console.log(monthElement?.textContent); // 看原始文本是什么
如果元素不存在,那就是选择器或XML结构的问题;如果文本是空,那可能是XML本身的内容有问题。
先从这几点入手,应该能解决你的问题!
内容的提问来源于stack exchange,提问作者ChisumTrail
相关产品推荐
相关产品推荐

