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


Posted in 面试题 onMay 28, 2014
写出一个函数来实现去掉任意一个给定的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 + "\b\b\b\b\b");
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.

Tags in this post...

面试题 相关文章推荐
一份全面的PHP面试问题考卷
Jul 15 面试题
一套PHP的笔试题
May 31 面试题
VC++笔试题
Oct 13 面试题
聚网科技C++面试笔试题
Sep 01 面试题
将"引用"作为函数参数有哪些特点
Apr 05 面试题
什么是唯一索引
Jul 05 面试题
linux系统都有哪些运行级别
Mar 26 面试题
介绍一下如何优化MySql
Dec 20 面试题
请用Java实现列出某个目录下的所有文件
Sep 23 面试题
高级Java程序员面试题
Jun 23 面试题
Servlet的生命周期
Aug 25 面试题
创联软件面试题笔试题
Oct 07 面试题
如何在C# winform中异步调用web services
Sep 21 #面试题
静态成员和非静态成员的区别
May 12 #面试题
C# Debug和Testing相关面试题
Oct 25 #面试题
C#中有没有运算符重载?能否使用指针?
May 05 #面试题
const和static readonly区别
May 20 #面试题
某公司C#程序员面试题笔试题
May 26 #面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
Feb 10 #面试题
You might like
地摊中国 - 珍藏老照片
2020/08/18 杂记
php实现简单的MVC框架实例
2015/09/23 PHP
PHP中串行化用法示例
2016/11/16 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python的gevent框架的入门教程
2015/04/29 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Django入门使用示例
2017/12/12 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python print出共轭复数的方法详解
2019/06/25 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
Python函数基本使用原理详解
2020/03/19 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
一名毕业生的自我鉴定
2013/12/04 职场文书
成功的酒店创业计划书
2013/12/27 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
我爱我班主题班会
2015/08/13 职场文书
《小小的船》教学反思
2016/02/18 职场文书