各位程序员,您好。
我的团队领导给了我一个任务,我需要将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()
调用。您正在循环中修改文档,因此需要首先收集所有要替换的标记。