2009-06-02 6 views
1

Давайте говорить у меня есть следующий XML,Вставка XElement окружать другой XElement с LinqToXml

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

и теперь я хочу, чтобы «вставить» в <And> положение, которое окружает пункт BeginsWith, так это выглядит, как это позже ,

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

Как это сделать с LinqToXml?

Надстройка метод, где я по существу сделать where.Add(new XElement("And")) будет только добавить «и» после BeginsWith, как это,

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

ответ

6
  • Получить элемент BeginsWith
  • вызов XNode.Remove() на него, чтобы удалить его из Где
  • Добавьте и элемент
  • Добавить BeginsWith в А элемент (или создать и элемент его, используя в качестве контента начать с)

Например:

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

Спасибо, Джон, это работает как шарм :-) –

1

Я не знаю, что есть какая-атомарная операция, которая будет делать это для тебя. Вероятно, вам придется добавить элемент «И», а затем переместить в него элемент BeginsWith.

Смежные вопросы