2009-06-02 7 views
1

LET'S dire que j'ai le code XML suivant,XElement pour entourer Insérer une autre XElement avec LinqToXml

<Where><BeginsWith>...</BeginsWith></Where> 

et maintenant je veux « insérer » une clause <And> qui entoure la clause BeginsWith il ressemble à ceci après ,

<Where><And><BeginsWith>...</BeginsWith></And></Where> 

Comment puis-je accomplir cela avec LinqToXml?

La méthode Add où je fais essentiellement where.Add(new XElement("And")) ne fera que ajouter le « Et » après BeginsWith, comme celui-ci,

<Where><BeginsWith>...</BeginsWith><And /></Where> 

Répondre

6
  • Désigne l'élément BeginsWith
  • Appel XNode.Remove() sur elle pour le retirer de l'endroit où
  • Ajouter le et élément
  • Ajouter BeginsWith au Et élément (ou créer le et élément en utilisant comme le contenu commencer par)

par exemple:

using System; 
using System.Xml.Linq; 

public class Test 
{ 
    public static void Main() 
    { 
     XElement where = XElement.Parse 
      ("<Where><BeginsWith>...</BeginsWith></Where>"); 
     XElement beginsWith = where.Element("BeginsWith"); 
     beginsWith.Remove(); 
     where.Add(new XElement("And", beginsWith)); 
     Console.WriteLine(where); 
    }   
} 
+0

Merci Jon, ça fonctionne comme un charme :-) –

1

Je ne sais pas qu'il y ait une opération atomique qui fera pour vous. Vous devrez probablement ajouter l'élément "And", puis déplacez l'élément BeginsWith à l'intérieur.

Questions connexes