使用linq和c#更改元素名称并删除属性

时间:2016-07-19 15:09:00

标签: c# xml linq

我有一个任务,我需要将xml转换为xhtml。

经过一些试验和错误后。即将使用c# 我还读了一些linq到xml的文章

我在这里尝试做的是根据其属性

更改元素名称

这是我的xml输入

<p><tada><Emphasis Type="Italic">q</Emphasis>-analogues of <Emphasis Type="Italic">n</Emphasis></tada>
<tada><todo><Emphasis Type="Italic">abc</Emphasis></todo></tada></p>

这是可能的输出

<p>
  <tada>
    <i>q</i>-analogues of <i>n</i></tada>
  <tada>
    <todo>
      <i>abc</i>
    </todo>
  </tada>
</p>

到目前为止这是我的c#代码

XElement root = XElement.Load(@"C:\Users\Desktop\trial.xml");
            IEnumerable<XElement> Emphasis =
                from el in root.Descendants("Emphasis")
                where (string)el.Attribute("Type") == "Italic"
                select el;
            foreach (XElement el in Emphasis)
            {
                el.Name = "i";

            }
            Console.WriteLine(root.ToString());

这是输出

<p>
  <tada>
    <i Type="Italic">q</i>-analogues of <i Type="Italic">n</i></tada>
  <tada>
    <todo>
      <i Type="Italic">abc</i>
    </todo>
  </tada>
</p>

输出错误,因为它没有删除属性

0 个答案:

没有答案