如何在C#中使用LINQ重命名XElement名称?

时间:2019-05-10 10:12:14

标签: c# .net xml linq

我的XML中有多个标签,例如<b><i><u>。因此,我想将每一个分别重命名为<span class="ld_bold"><span class="ld_italic"><span class="ld_underline">

当前,我正在使用foreach进行此操作,但是我想使用LINQ

以下是我的方法:

foreach (var item in xdoc.Descendants("b"))
{
    item.Name = "span";
    item.SetAttributeValue("class", "ld_bold");
}

foreach (var item in xdoc.Descendants("i"))
{
    item.Name = "span";
    item.SetAttributeValue("class", "ld_italic");
}

foreach (var item in xdoc.Descendants("u"))
{
    item.Name = "span";
    item.SetAttributeValue("class", "ld_underline");
}

我想做类似的事情:

xdoc.Descendants().Where(el => el.InnerXml().Contains("<b>")).Select(x => x).ToList()
                  .ForEach(x => x.Name.LocalName.Equals("span") && x.SetAttributeValue("class", "ld_bold"));

LINQ中,我在ForEach部分遇到了一个错误。

0 个答案:

没有答案