在特定位置插入XML节点

我有一个XML文件,我将它加载到Xmldocument中。 该文档的节点包含一些像这样的子节点

       // I need to insert it  // I need to insert this second time       

这里somenode有一些子节点,其中第一个和最后一个子节点名称相同,除了第一个节点和最后一个节点之外的其他节点具有一些不同的名称(彼此相同)。 我正在创建一个在特定位置插入节点的function,我不确定标准但可能在中间。

  • 如何在特定位置插入节点。 我正在使用XMLnode.appendChild方法进行插入
  • 插入后是否需要重新排列/排序节点? 请建议。
  • 如何确定结构是什么以及如何根据当前文档结构找到新节点的添加位置。

您可以使用XLinq 修改XML文档

以下是xml修改的示例

  String xmlString = ""+""+ ""+ "  "+ " 1"+ //1 " 2"+ //2 " 3"+ // 3, I need to insert it " 4"+ //4, I need to insert this second time " 5"+ " 6"+ "  "+ " "+ ""; XElement root = XElement.Parse(xmlString); var childrens = root.Descendants("children").ToArray(); var third = childrens[3]; var fourth = childrens[4]; third.AddBeforeSelf(new XElement("children")); fourth.AddBeforeSelf(new XElement("children")); var updatedchildren = root.Descendants("children").ToArray(); 

这是一个不使用LINQ to XML的解决方案。 它是作为XmlNode类的扩展方法实现的:

 public static void InsertAt(this XmlNode node, XmlNode insertingNode, int index = 0) { if(insertingNode == null) return; if (index < 0) index = 0; var childNodes = node.ChildNodes; var childrenCount = childNodes.Count; if (index >= childrenCount) { node.AppendChild(insertingNode); return; } var followingNode = childNodes[index]; node.InsertBefore(insertingNode, followingNode); } 

现在,您可以在所需位置插入节点,如下所示:

  parentXmlNode.InsertAt(childXmlNode, 7);