4

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

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

先感谢您。

4

2 回答 2

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
 }

只能有一个根元素

于 2013-03-26T15:02:02.450 回答
1

您需要创建一个元素。目前,您正在为comUnits. 你应该拉这个声明:

Element rootElement = fileDeclarationDocument.createElement("class");

...并将其附加到文档中:

fileDeclarationDocument.appendChild(rootElement);

然后在您的循环中,您可以为每次迭代创建一个新元素,并将其附加根元素。(说实话,您还不清楚您希望您的 XML 结构是什么。有了更多详细信息,我们可能会为您提供更多帮助。)

于 2013-03-26T15:00:37.920 回答