编程实现去掉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的面试题
May 06 面试题
C++面试题:关于链表和指针
Jun 05 面试题
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
Feb 15 面试题
数据库什么时候应该被重组
Nov 02 面试题
如何估计一张表的大小(假设该表中有1万条数据)
Mar 27 面试题
武汉世纪畅想数字传播有限公司.NET笔试题
Jul 22 面试题
C#实现启动一个进程
Oct 01 面试题
remote接口和home接口主要作用
May 15 面试题
介绍一下EJB的分类及其各自的功能及应用
Aug 23 面试题
编程输出如下图形
Nov 24 面试题
解释下面关于J2EE的名词
Nov 15 面试题
Ruby如何定义一个类
Oct 08 面试题
如何在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
Zend引擎的发展 [15]
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/12/06 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
PHP加密技术的简单实现
2016/09/04 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
动态加载JS文件的三种方法
2013/11/08 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
火箭队口号
2014/06/18 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
停车场管理制度范本
2015/08/05 职场文书