2014-09-23 72 views

回答

7

你可以使用一个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"); 

另一种方式是实现一个IEqualityComparerXElement类,然后用Distinct方法。

1

尝试的XSLT 2.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> 

您可以运行使用撒克逊或XmlPrime C#。

相关问题