Insérer un noeud XML à une position spécifique

J’ai un fichier XML et je le charge dans Xmldocument. Ce document a un nœud avec des nœuds enfants comme celui-ci

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

ici, somenode a des enfants où les noms de nœuds premier et dernier enfants sont identiques, alors que les autres nœuds, à l’exception du premier et du dernier nœud, ont un nom différent (identiques l’un à l’autre). Je crée une fonction pour insérer un nœud à une position spécifique. Je ne suis pas sûr des critères mais je peux être au milieu.

  • comment puis-je insérer un noeud dans une position spécifique. J’utilise la méthode XMLnode.appendChild pour l’insertion
  • Dois-je réorganiser / sortinger les nœuds après l’insertion? Veuillez suggérer.
  • Comment puis-je déterminer quelle est la structure et comment dois-je trouver où le nouveau nœud doit être ajouté en fonction de la structure actuelle du document.

vous pouvez utiliser XLinq pour modifier un document XML

Voici un exemple de modification XML

  Ssortingng xmlSsortingng = ""+""+ ""+ "  "+ " 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(xmlSsortingng); 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(); 

Voici une solution sans utiliser LINQ to XML . Il est implémenté en tant que méthode d’extension pour la classe 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); } 

Maintenant, vous pouvez insérer un nœud à la position désirée aussi simplement que:

  parentXmlNode.InsertAt(childXmlNode, 7);