You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Web服务从XML文档获取数据时遭遇NullPointerException求助

解决XML解析中的NullPointerException问题

嘿,我来帮你搞定这个空指针异常的问题!从你提供的代码和异常信息来看,问题出在doc.getDoctype().getTextContent()这一行——doc.getDoctype()返回了null,你直接调用它的getTextContent()方法,自然就触发了NullPointerException。

为什么会出现这个问题?

当你解析的XML文档中没有DOCTYPE声明时,Document.getDoctype()方法就会返回null。而你的代码没有做任何判空处理,直接调用后续方法,就会抛出异常。另外,我注意到你代码里创建了InputSource对象但没有实际使用,这部分属于冗余代码,不过暂时不是导致NPE的原因。

解决方案

1. 先判空再调用方法(最直接解决NPE)

修改代码,先检查getDoctype()的返回值是否为null,再执行后续操作:

String name = "Nsss"; 
String resulturl = "http://ssss/res/get?sid=" + name; 
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
// 你之前创建的InputSource没用到,这里可以删掉或者按需使用
Document doc = db.parse(resulturl); 

// 新增判空逻辑
if (doc.getDoctype() != null) {
    System.out.println("sssssssssssssssssssssssssssssssssssssssssssssssssss" + doc.getDoctype().getTextContent());
} else {
    System.out.println("注意:解析的XML文档没有DOCTYPE声明");
}

2. 确认Web服务返回的XML结构

你可以先通过浏览器或者curl工具访问resulturl对应的地址,查看返回的XML是否真的包含DOCTYPE声明。如果服务返回的XML本身就没有DOCTYPE,那getDoctype()返回null是正常的,这时候你可能需要调整逻辑,不要依赖DOCTYPE的内容。

3. 清理冗余代码

你代码里创建了InputSource is但完全没用到,这部分可以直接删除,避免代码混乱。如果你的需求是解析字符串形式的XML才需要用到InputSource,那你需要调整代码逻辑,把XML字符串传入InputSource再解析,而不是直接解析URL。

内容的提问来源于stack exchange,提问作者siva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:10:15