使用linq将xmlelement名称更改为xml



各位程序员,您好。

我的团队领导给了我一个任务,我需要将xml文件转换为html5

我不想使用xslt,这就是为什么我要在System.xml.

但我是LINQ和c#的新手

具体来说:我要做的是删除TAGS名称的元素。

这是我的xml文件

<Root>
    <Paragraph>
        <Tags>
            Just some text
        </Tags>
    </Paragraph>
    <AnotherTag>
        <Paragraph>
            <Tags>
            Another Text
            </Tags>
        </Paragraph>
    </AnotherTag>
</Root>

并且可能的输出是:

<Root>
    <Paragraph>
            Just some text
    </Paragraph>
    <AnotherTag>
        <Paragraph>
            Another Text
        </Paragraph>
    </AnotherTag>
</Root>

它所做的是删除标签,但其内容保持在的位置

这是我的c#代码:

XElement root = XElement.Load("myxml.xml");
        IEnumerable<XElement> tagsToremove =
            from el in root.Descendants("Tags")
            select el;
        foreach (XElement el in tagsToremove)
        {
            Console.WriteLine(el);
        }

所以我需要的只是删除节点的代码。非常感谢。

我建议将内容复制到父元素,并使用XElement.Remove方法删除该元素。

    XDocument doc = XDocument.Load(filepath);
    var elements = doc.Descendants("Tags");
    foreach(var element in elements)
    {
        var content  = (string)element.Value;
        var parent = element.Parent;            
        element.Remove();
        parent.Add(content);        
    }

检查此Demo

您可以这样做:

var doc = XDocument.Load(pathToFile);
foreach (var tag in doc.Descendants("Tags").ToList())
    tag.ReplaceWith((string)tag);

注意那里的ToList()调用。您正在循环中修改文档,因此需要首先收集所有要替换的标记。

相关内容

  • 没有找到相关文章

最新更新