Вставка XElement для окружения другого XElement с LinqToXml - PullRequest
1 голос
/ 02 июня 2009

Допустим, у меня есть следующий xml,

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

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

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

Как мне добиться этого с LinqToXml?

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

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

Ответы [ 2 ]

6 голосов
/ 02 июня 2009
  • Получить элемент BeginsWith
  • Звоните XNode.Remove(), чтобы удалить его из Где
  • Добавить элемент And
  • Добавить BeginsWith к элементу And (или создать элемент And, используя его в качестве содержимого для начала)

Например:

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);
    }        
}
1 голос
/ 02 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...