2012-01-22 163 views
3

我已經來到了一個場景,我需要在其他地方創建一個新元素後覆蓋根(w3c dom)文檔元素。到目前爲止,我已經嘗試實現這一目標的兩種不同的方式:如何覆蓋根元素

document.removeChild(document.getDocumentElement()); 

,隨後這樣的:

newElement = document.getDocumentElement(); 
newElement = document.createElement("newRootElementName"); 
document.appendChild(newElement); 

既不似乎覆蓋根元素,並保存後,該文件似乎只包含根元素是空的。

+3

林在JavaScript中的溶液中不感興趣。我對Java中的解決方案感興趣,並且它被如此標記。 – travega

回答

4

用示例我發現here,這裏是你如何做到這一點。因爲顯然沒有方法更改元素的名稱,你就必須做到以下幾點:

  1. 用新名稱
  2. 複製舊元素的屬性
  3. 複製舊元素的兒童創建另一個元素
  4. 最後替換節點。

例如:

// Obtain the root element 
Element element = document.getDocumentElement(); 

// Create an element with the new name 
Element element2 = document.createElement("newRootElementName"); 

// Copy the attributes to the new element 
NamedNodeMap attrs = element.getAttributes(); 
for (int i=0; i<attrs.getLength(); i++) { 
    Attr attr2 = (Attr)document.importNode(attrs.item(i), true); 
    element2.getAttributes().setNamedItem(attr2); 
} 

// Move all the children 
while (element.hasChildNodes()) { 
    element2.appendChild(element.getFirstChild()); 
} 

// Replace the old node with the new node 
element.getParentNode().replaceChild(element2, element); 
+0

是的,這是它的排序!謝謝 – travega