美好的一天同事们。
我的团队负责人给了我一个任务,我需要将xml文件转换为html5
我不想使用xslt,这就是为什么我要在c#的帮助下使用c# 的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>
它的作用是移除TAGS,但其内容保持在其位置
这是我的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);
}
所以我需要的是仅删除节点的代码。谢谢。
答案 0 :(得分:0)
我建议将内容复制到父元素,并使用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
答案 1 :(得分:0)
你可以这样做:
var doc = XDocument.Load(pathToFile);
foreach (var tag in doc.Descendants("Tags").ToList())
tag.ReplaceWith((string)tag);
请注意那里的ToList()
电话。您正在循环中修改文档,因此您需要首先收集要替换的所有标记。