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

面试题 相关文章推荐
我的applet原先好好的, 一放到web server就会有问题,为什么?
May 10 面试题
怎样创建、运行java程序
Aug 01 面试题
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
Aug 15 面试题
函数指针的定义是什么
Aug 14 面试题
写出一个方法实现冒泡排序
Jul 08 面试题
C#如何调用Word并打开一个Word文档
May 08 面试题
Linux操作面试题
Feb 11 面试题
Linux如何命名文件--使用文件名时应注意
Jan 22 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
Apr 17 面试题
简述进程的启动、终止的方式以及如何进行进程的查看
Feb 20 面试题
ajax是什么及其工作原理
Feb 08 面试题
Java面试题:说出如下代码的执行结果
Oct 30 面试题
如何在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自动获取关键字的方法
2015/01/06 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
jquery中each方法示例和常用选择器
2014/07/08 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
React中的render何时执行过程
2018/04/13 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
python 如何对logging日志封装
2020/12/02 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
学校运动会广播稿
2014/10/11 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
SSM VUE Axios详解
2021/10/05 Vue.js
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript