编程实现去掉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.