什么';是查找和删除XML中重复节点的最快方法
本文关键字:节点 方法 XML 查找 删除 什么 | 更新日期: 2023-09-27 18:24:02
XML文件的结构类似于以下
<Nodes>
<Node> one </Node>
<Node> two </Node>
<Node> three </Node>
<Node> three </Node>
</Nodes>
由于xml文件有30000多个节点,我正在寻找查找和删除重复节点的最快方法。
你会怎么做?
您可以使用HashSet
:
var values = new HashSet<string>();
var xmlDocument = XDocument.Load("path");
foreach(var node in xmlDocument.Root.Elements("Node").ToList())
{
if(!values.Add((string)node))
node.Remove();
}
xmlDocument.Save("newpath");
另一种方法是为XElement
类实现IEqualityComparer
,然后使用Distinct
方法。
尝试XSLT2.0转换:
<Nodes xmlns:xsl="http://www.w3..org/1999/XSL/Transform" xsl:version="2.0">
<xsl:for-each-group select="/Nodes/Node" group-by=".">
<xsl:copy-of select="current-group()[1]"/>
</xsl:for-each-group>
</Nodes>
您可以使用Saxon或XmlPrime从C#运行它。