我正在尝试生成XML文件并保存。以下代码显示了我将根元素附加到文档的方式。当我这样做时,抛出异常如下。
线程“main”中的异常org.w3c.dom.DOMException:HIERARCHY_REQUEST_ERR:尝试插入不允许的节点。
public void comUnitIterator() {
System.out.println("This is the iterator");
Document fileDeclarationDocument = documentBuilder();
if (comUnits != null && comUnits.size() > 0) {
for (int i=0; i<comUnits.size();i++) {
CompilationUnit cu=comUnits.get(i);
SourceCodeClassVisitor classVisitor = new SourceCodeClassVisitor();
ClassOrInterfaceDeclaration classOrInterface = classVisitor.visit(cu, null);
Element rootElement = fileDeclarationDocument.createElement("class");
fileDeclarationDocument.appendChild(rootElement);
//classVisitor.visit(cu, null);
}
}
createXML(fileDeclarationDocument, "ABC");
}
有人可以告诉我这个例外的原因。
提前谢谢你。
答案 0 :(得分:2)
您为此循环的每次迭代添加了一个根元素:
for (int i=0; i<comUnits.size();i++)
将您的代码更改为:
Element rootElement = fileDeclarationDocument.createElement("class");
fileDeclarationDocument.appendChild(rootElement);
for (int i=0; i<comUnits.size();i++) {
//add children here
}
只能有一个根元素
答案 1 :(得分:1)
您需要创建单个根元素。目前,您正在为comUnits
的每个元素创建一个。你应该提出这个陈述:
Element rootElement = fileDeclarationDocument.createElement("class");
...并将其附加到文档中:
fileDeclarationDocument.appendChild(rootElement);
然后在循环中,您可以为每次迭代创建一个新元素,并将 附加到根元素。 (说实话,你真的不清楚你的XML结构是什么。有了更多细节,我们可以帮助你更多。)