我有这个代码
DocumentBuilderFactory docb = DocumentBuilderFactory.newInstance();
DocumentBuilder dom = docb.newDocumentBuilder();
Document doc = dom.newDocument();
Element raiz = doc.createElement("Alumnos");
//-Problem here
doc.getDocumentElement().appendChild(raiz);
这应该创建一个 XML 文件,但是当我尝试这样做时,出现异常:
线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException: 无法调用“org.w3c.dom.Element.appendChild(org.w3c.dom.Node)” 因为返回值 “org.w3c.dom.Document.getDocumentElement()”为空
我不确定为什么会得到这个以及为什么文档元素为空。我是不是忘记了什么?
我稍后尝试创建一个 XML 文件来附加元素,但我遇到了那个错误。
您创建了一个空文档,它还没有“documentElement”,因此
getDocumentElement()
返回null
。 doc.createElement
方法只是创建一个元素,它不会将它添加到文档中,您需要明确地这样做:
DocumentBuilderFactory docb = DocumentBuilderFactory.newInstance();
DocumentBuilder dom = docb.newDocumentBuilder();
Document doc = dom.newDocument();
Element raiz = doc.createElement("Alumnos");
doc.appendChild(raiz);
换句话说,去掉对
getDocumentElement()
的调用,而是直接在appendChild(raiz)
上调用doc
。这将使Alumnos
成为文档元素(根元素)。
之后,调用
doc.getDocumentElement()
将返回与 raiz
引用的相同对象。