我正在尝试创建XmlElement
并将其作为兄弟插入现有元素之后。这是现有元素:
<!-- 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);
但是,上面代码中的最后一行会产生一个异常,表示“The reference node is not a child of this node.”
感谢
答案 0 :(得分:0)
这是错误的:
xmlDoc.InsertAfter(newDivElement, selectedElement);
您需要将子项插入selectedElement
的父节点,如下所示:
var parent = selectedElement.ParentNode;
parent.InsertAfter(newDivElement, selectedElement);