在.NET XmlDocument中移动“孩子”的最佳方法是什么?

时间:2010-03-13 03:28:31

标签: c# xml

给出这样的XML结构:

<garage>
 <car>Firebird</car>
 <car>Altima</car>
 <car>Prius</car>
</garage>

我希望将“Prius”节点“移动”“一级”,使其显示在Altima节点上方。这是我想要的最终结构:

<garage>
 <car>Firebird</car>
 <car>Prius</car>
 <car>Altima</car>
</garage>

所以给出了C#代码:

XmlNode priusNode = GetReferenceToPriusNode()

让priusNode“向上移动”车库子列表中的一个位置的最佳方法是什么?

2 个答案:

答案 0 :(得分:8)

获取上一个兄弟节点,删除要从其父节点移动的节点,然后在兄弟节点之前重新插入该节点。

XmlNode parent = priusNode.ParentNode.
XmlNode previousNode = priusNode.PreviousSibling;
//parent.RemoveChild(priusNode);  // see note below
parent.InsertBefore(priusNode, previousNode);

忽略错误处理,但实际实现需要它。

编辑:根据Mike的评论,RemoveChild调用是多余的:正如文档所说,“如果newChild [在这种情况下是priusNode] 已经在树中,它从原来的位置移开并添加到目标位置。“谢谢迈克!

答案 1 :(得分:-1)

尝试

http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.parentnode.aspx

XmlNode nodParent = priusNode.ParentNode;