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

面试题 相关文章推荐
同步和异步有何异同,在什么情况下分别使用他们?举例说明
Feb 27 面试题
华为C++笔试题
Aug 05 面试题
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
May 23 面试题
Oracle性能调优原则
May 03 面试题
北京某科技有限公司C# .net笔试题
Sep 27 面试题
中科软笔试题和面试题
Oct 07 面试题
长青弘远的面试题
Jun 09 面试题
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
Jun 05 面试题
异步传递消息系统的作用
May 01 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
Nov 09 面试题
一道Delphi上机题
Jun 04 面试题
一套Delphi的笔试题一
Feb 14 面试题
如何在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一些有意思的小区别
2006/12/06 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
学习PHP session的传递方式
2016/06/15 PHP
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
python3编写C/S网络程序实例教程
2014/08/25 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
英国现代绅士品牌:Hackett
2017/12/17 全球购物
《春天来了》教学反思
2014/04/07 职场文书
产品委托授权书范本
2014/09/16 职场文书
感谢信的格式
2015/01/21 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js