2015-09-28 29 views
0

我試圖創建一個XmlElement並將其作爲兄弟插入現有元素之後。以下是現有元素:無法將新元素插入到XML樹中

<!--  other XHTML precedes this --> 
     <p id="testElement">Test element</p> 
<!--  other XHTML follows this --> 

該文檔僅包含一個像上面那樣的p元素。 這裏是我想要的p元素後要添加的元素:

<div class=」CodeChar」> 
    <pre/> 
</div> 

我想要的結果的XHTML看起來像這樣:

<!--  other XHTML precedes this --> 
     <p id="testElement">Test element</p> 
     <div class=」CodeChar」> 
      <pre/> 
     </div> 
<!--  other XHTML follows this --> 

我使用下面的代碼行獲得參照p元素,並添加DIV:

XmlElement selectedElement = null; 
XmlNodeList elts = xmlDoc.GetElementsByTagName("p"); 
foreach (XmlElement elt in elts) 
{ 
    String val = elt.GetAttribute("id"); 
    if (val.Equals("testElement")) 
    { 
     selectedElement = elt; 
     break; 
    } 
} 

if (selectedElement == null) 
{ 
    return; 
} 

XmlElement newDivElement = xmlDoc.CreateElement("div"); 
newDivElement.SetAttribute("class", "CodeChar"); 
XmlElement preNode = xmlDoc.CreateElement("pre"); 
newDivElement.AppendChild(preNode); 
xmlDoc.InsertAfter(newDivElement, selectedElement); 

然而,在上面的代碼中的最後一行產生一個寫着的異常 感謝

回答

0

在這裏,這是錯誤的:

xmlDoc.InsertAfter(newDivElement, selectedElement); 

你需要給孩子插入到你的selectedElement的父節點,就像這樣:

var parent = selectedElement.ParentNode; 
parent.InsertAfter(newDivElement, selectedElement); 
+0

謝謝 - 完美的作品。我明白現在它是如何工作的。 –