将根元素添加到java中的xml文档中

时间:2013-03-26 14:57:50

标签: java xml dom

我正在尝试生成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");
}

有人可以告诉我这个例外的原因。

提前谢谢你。

2 个答案:

答案 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结构是什么。有了更多细节,我们可以帮助你更多。)