编程实现去掉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 31 面试题
请说出你所知道的线程同步的方法
Apr 19 面试题
JAVA的事件委托机制和垃圾回收机制
Sep 07 面试题
Java工程师面试集锦之Spring框架
Jun 16 面试题
如何找出EMP表里面SALARY第N高的employee
Dec 05 面试题
西部世纪.net笔试题面试题
Apr 03 面试题
.NET remoting的两种通道是什么
May 31 面试题
什么是View State?
Jan 27 面试题
linux面试题参考答案(8)
Apr 19 面试题
网友共享的几个面试题关于Java和Unix等方面的
Sep 08 面试题
Java程序员面试题
Jul 15 面试题
与UNIX有关的几个名词
Sep 17 面试题
如何在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
MYSQL环境变量设置方法
2007/01/15 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
js判断密码强度的方法
2020/03/18 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
高中军训感言600字
2014/03/11 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
教师个人师德总结
2015/02/06 职场文书
怎样写工作总结啊!
2019/06/18 职场文书