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

面试题 相关文章推荐
C/C++有关内存的思考题
Dec 04 面试题
JAVA和C++的区别
Oct 06 面试题
介绍一下.net和Java的特点和区别
Sep 26 面试题
网络体系结构及协议的定义
Mar 13 面试题
一些网络技术方面的面试题
May 01 面试题
Linux上比较文件的命令都有哪些
Sep 28 面试题
斯福泰克软件测试面试题
Feb 16 面试题
GWebs公司笔试题
May 04 面试题
Python是如何进行类型转换的
Jun 09 面试题
Java基础面试题
Jul 19 面试题
AssertionError 跟一下那个类是 “is – a”的关系
Feb 21 面试题
什么是继承
Dec 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
PHP 数组基础知识小结
2010/08/20 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
python生成验证码图片代码分享
2016/01/28 Python
python使用knn实现特征向量分类
2018/12/26 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
勤奋学习演讲稿
2014/05/10 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
离婚协议书范本2014
2014/10/27 职场文书
个人优缺点总结
2015/02/28 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL