linq to xml - удалить узел оболочки - PullRequest
1 голос
/ 18 мая 2011

Есть ли способ удалить узел, который оборачивает несколько других узлов, но сохраняя содержащие узлы?

Мне нужно удалить все экземпляры «AreaImageCaption», но нужно сохранить «image» и «caption»

<products>
    <product>
        <name>100</name>
        <AreaImageCaption>
            <image>image1</image>
            <caption>caption1</caption>
        </AreaImageCaption>
        <AreaImageCaption>
            <image>image2</image>
            <caption>caption2</caption>
        </AreaImageCaption>
    </product>
</products>

Спасибо

1 Ответ

0 голосов
/ 18 мая 2011

Попробуйте это

        string s =
            @"<products>
        <product>
            <name>100</name>
            <AreaImageCaption>
                <image>image1</image>
                <caption>caption1</caption>
            </AreaImageCaption>
            <AreaImageCaption>
                <image>image2</image>
                <caption>caption2</caption>
            </AreaImageCaption>
       </product>
    </products>";

        XElement element = XElement.Parse(s);
        element.Descendants("AreaImageCaption").ToList().ForEach(aic =>
                                                                 {
                                                                     aic.Elements().ToList().ForEach(el => aic.Parent.Add(el));
                                                                     aic.Remove();
                                                                 });

        string result = element.ToString();

Я пытаюсь добавить все дочерние элементы из <AreaImageCaption /> и добавить его в родительский элемент, а затем удалить элемент <AreaImageCaption />.

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