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

2023-07-06   


写出一个函数来实现去掉任意一个给定的XML文档的重复结点,以给定的”key”重复作为结点重复的标准,如下例:
  
  
  
   Milk
   4
  
  
   Milk
   0.5
  
  
   Coffe
   0.5
  
  
  
   当以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 + "");
   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.


相关内容:

  1. 编程用JAVA解析XML的方式
  2. 你在项目中用到了xml技术的哪些方面?如何实现的?
  3. 一个C/C++编程面试题
  4. 链表面试题-一个链表的结点结构
  5. 编程实现当输入某产品代码则打印出该产品记录的功能
  6. 请写出一段Python代码实现删除一个list里面的重复元素