给定这样的XML结构:
<garage>
<car>Firebird</car>
<car>Altima</car>
<car>Prius</car>
</garage>
Run Code Online (Sandbox Code Playgroud)
我希望将"Prius"节点"移动""一级",使其显示在Altima节点上方.这是我想要的最终结构:
<garage>
<car>Firebird</car>
<car>Prius</car>
<car>Altima</car>
</garage>
Run Code Online (Sandbox Code Playgroud)
所以考虑到C#代码:
XmlNode priusNode = GetReferenceToPriusNode()
Run Code Online (Sandbox Code Playgroud)
什么是让priusNode在车库的子列表中"向上移动"一个位置的最佳方法是什么?
获取上一个兄弟节点,删除要从其父节点移动的节点,然后在兄弟节点之前重新插入它.
XmlNode parent = priusNode.ParentNode.
XmlNode previousNode = priusNode.PreviousSibling;
//parent.RemoveChild(priusNode); // see note below
parent.InsertBefore(priusNode, previousNode);
Run Code Online (Sandbox Code Playgroud)
错误处理被忽略但是实际实现需要.
编辑:根据Mike的评论,RemoveChild调用是多余的:正如文档所说,"如果newChild [在这种情况下是priusNode]已经在树中,它将从原始位置移除并添加到其目标位置." 谢谢迈克!
| 归档时间: |
|
| 查看次数: |
4662 次 |
| 最近记录: |