linq to xml - 删除包装器节点

时间:2011-05-18 13:11:12

标签: asp.net xml linq linq-to-xml

有没有办法删除包含其他几个节点但保留包含节点的节点?

我需要删除“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 :(得分:0)

试试这个

        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 />元素。