C# 什么';“这是最好的搬家方式”;“一个孩子长大了”;在.NET XML文档中?
给定如下XML结构:C# 什么';“这是最好的搬家方式”;“一个孩子长大了”;在.NET XML文档中?,c#,xml,C#,Xml,给定如下XML结构: <garage> <car>Firebird</car> <car>Altima</car> <car>Prius</car> </garage> 让priusNode在车库的子列表中“上移”一个位置的最佳方法是什么?试试看 获取上一个同级节点,从其父节点移除要移动的节点,然后在同级节点之前重新插入该节点 XmlNode parent = priusNode.Paren
<garage>
<car>Firebird</car>
<car>Altima</car>
<car>Prius</car>
</garage>
让priusNode在车库的子列表中“上移”一个位置的最佳方法是什么?试试看
获取上一个同级节点,从其父节点移除要移动的节点,然后在同级节点之前重新插入该节点
XmlNode parent = priusNode.ParentNode.
XmlNode previousNode = priusNode.PreviousSibling;
//parent.RemoveChild(priusNode); // see note below
parent.InsertBefore(priusNode, previousNode);
错误处理被忽略,但实际实现需要错误处理
编辑:根据Mike的评论,RemoveChild调用是多余的:正如文档所说,“如果newChild[在本例中为priusNode]已经在树中,它将从其原始位置删除并添加到其目标位置。”谢谢Mike 你能再解释一下吗?如何使用ParentNode来更改的子节点的顺序?这非常简单,效果也很好。我还注意到RemoveNode()调用是无关的-InsertBefore()只会移动它。为了使它更通用和更安全,您应该添加一个检查,看看是否确实存在previousSibling(如果(previousNode!=null)…)你为什么要把普锐斯的刹车问题推高?@Mike:你知道C的
XmlDocument
类与VB.NET的类是一样的,对吧?称之为“C#XmlDocument”只是一种说话方式,对吗?
XmlNode priusNode = GetReferenceToPriusNode()
XmlNode nodParent = priusNode.ParentNode;
XmlNode parent = priusNode.ParentNode.
XmlNode previousNode = priusNode.PreviousSibling;
//parent.RemoveChild(priusNode); // see note below
parent.InsertBefore(priusNode, previousNode);