2013-03-26 98 views
1

我試圖生成一個XML文件並將其保存。以下代碼顯示了我將根元素附加到文檔的方式。當我這樣做時,拋出異常如下。將根元素添加到java中的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

可以嘗試使用JDOM ,DOM在Java中有點冗長和有問題。 http://www.jdom.org/ – Skepi 2013-03-26 15:01:19

回答

1

您需要創建一個單個的根元素。目前,您正在爲comUnits的每個元素創建一個。你應該拉這樣的說法:

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

...它附加到文件:

fileDeclarationDocument.appendChild(rootElement); 

然後在你的循環,你可以爲每個迭代一個新的元素,並追加到根元素。 (真的不清楚你想要什麼XML結構,說實話,有關更多細節,我們可能會幫助你更多。)

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 
} 

只能有一個根元素

相關問題