Java 为什么我能';t使用JDOM从根元素获取属性 让我们考虑一下这个XML文件: <?xml version="1.0" encoding="UTF-8"?> <root attribute="value"> <element>myElement</element> </root>
对于这个xml文件,一切正常。但当我使用此文件时:Java 为什么我能';t使用JDOM从根元素获取属性 让我们考虑一下这个XML文件: <?xml version="1.0" encoding="UTF-8"?> <root attribute="value"> <element>myElement</element> </root>,java,xml,root,jdom,Java,Xml,Root,Jdom,对于这个xml文件,一切正常。但当我使用此文件时: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE rootElement PUBLIC "-//Project" "mydtd.dtd"> <root attribute="value"> <element>myElement</element> </root> myElement 我在线程“main”java.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rootElement PUBLIC "-//Project" "mydtd.dtd">
<root attribute="value">
<element>myElement</element>
</root>
myElement
我在线程“main”java.lang.NullPointerException中得到异常
您认为我应该在解析之前从xml文件中删除DOCTYPE,然后在完成解析之后再删除它吗
或者在这种情况下我还能做些什么
谢谢
或者在这种情况下我还能做些什么
是-永远不要这样做:
catch(Exception e){}
这不是JDOM或属性的问题,而是一般异常处理的问题
很可能您得到的是NullPointerException
,因为XML文件没有正确解析,所以文档
字段是null
。但由于捕获并忽略了异常,因此没有收到任何有意义的错误消息
将当前所有代码移到catch块之后的try/catch块中,您将得到一个更有用的错误报告
或者在这种情况下我还能做些什么
是-永远不要这样做:
catch(Exception e){}
这不是JDOM或属性的问题,而是一般异常处理的问题
很可能您得到的是NullPointerException
,因为XML文件没有正确解析,所以文档
字段是null
。但由于捕获并忽略了异常,因此没有收到任何有意义的错误消息
将当前所有代码移到catch块之后的try/catch块中,您将得到一个更有用的错误报告。导致此空指针异常的原因是什么?引发异常的位置是哪里?请提供堆栈跟踪并标记引发exception.root=document.getRootElement()的行@OpenMind:该行引发异常的原因与我在回答中所述的相同。是什么导致此空指针异常?引发异常的位置?请提供堆栈跟踪并标记引发exception.root=document.getRootElement()的行@OpenMind:该行引发异常是因为我在回答中指出的原因。@OpenMind:是的,我知道,但你应该这样做,因为这就是导致错误的原因(《代码》NullPointerException
)。您可能认为异常处理在这里无关紧要,但事实并非如此。@OpenMind:请参阅我答案中的最后一句话。不要吞下sxb.build中的异常;允许它被抛出,或者至少在某个地方打印出来。好吧,我编辑了代码和xml以使其更具体,现在我有了java.io.FileNotFoundException:C:\Users\Anonymous\Desktop\hello\u world\mydtd.dtd(系统找不到指定的文件)
@OpenMind:Ok,这就是你的问题。要么将DTD文件放在那里,要么从XML文件中删除DOCTYPE。@OpenMind:是的,我知道,但你应该这样做,因为这就是导致错误的原因(NullPointerException)。您可能认为异常处理在这里无关紧要,但事实并非如此。@OpenMind:请参阅我答案中的最后一句话。不要吞下sxb.build中的异常;允许它被抛出,或者至少在某个地方打印出来。好吧,我编辑了代码和xml以使其更具体,现在我有了java.io.FileNotFoundException:C:\Users\Anonymous\Desktop\hello\u world\mydtd.dtd(系统找不到指定的文件)
@OpenMind:Ok,这就是你的问题。将DTD文件放在那里,或者从XML文件中删除DOCTYPE。