编程实现去掉XML的重复结点

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 95 收藏 0 点赞 0 评论 0

写出一个函数来实现去掉任意一个给定的XML文档的重复结点,以给定的”key”重复作为结点重复的标准,如下例:
<Products>
   
<Product>
     <Name>Milk</Name>
     <Amount>4</Amount>
   </Product>
   <Product>
     <Name>Milk</Name>
     <Amount>0.5</Amount>
   </Product>
   <Product>
     <Name>Coffe</Name>
     <Amount>0.5</Amount>
   </Product>
</Products>

当以Name字段作为key时,第一个和第二个结点是重复的,当Amount作为key时,则第二个和第三个结点是重复结点。
所以函数应该是这样格式的:
string DeDup(string xml, string keyNode, string rootPath)

参考解决方案:

private static string RemoveDuplicates(string xml, string key, string rootXPath)
{
XmlDocument doc = new XmlDocument();
List sb = new List();
string keyValue;
try
{
doc.Load(xml);
XmlElement root = doc.DocumentElement;
XmlNodeList xnodelist = root.SelectNodes(rootXPath);
int i=0;
foreach (XmlNode item in xnodelist)
{
Console.WriteLine(i + "bbbbb");
i++;
keyValue = item.SelectSingleNode(key).InnerXml;
if (sb.Contains(keyValue))
xnode.RemoveChild(item);
else
sb.Add(keyValue); 
}
return doc.OuterXml;
}
catch (Exception ex)
{
// Log exception... 
throw ex;
}
}
这个方案只适合于小的xml文档,大的话应考虑应用SAX等解决方案来进行parse.

评论列表
文章目录