“org.w3c.dom.Document.getDocumentElement()”的返回值为null

问题描述 投票:0回答:1

我有这个代码

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 文件来附加元素,但我遇到了那个错误。

java xml w3c
1个回答
0
投票

您创建了一个空文档,它还没有“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
引用的相同对象。

© www.soinside.com 2019 - 2024. All rights reserved.