给出这样的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“向上移动”车库子列表中的一个位置的最佳方法是什么?
答案 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;