Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';“这是最好的搬家方式”;“一个孩子长大了”;在.NET XML文档中?_C#_Xml - Fatal编程技术网

C# 什么';“这是最好的搬家方式”;“一个孩子长大了”;在.NET 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

给定如下XML结构:

<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);