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

面试题 相关文章推荐
Tomcat中怎么使用log4j输出所有的log
Jul 07 面试题
如何打开WebSphere远程debug
Oct 10 面试题
类、抽象类、接口的差异
Jun 13 面试题
Java方面的关于数组和继承的笔面试题
Sep 18 面试题
2019年Java面试必问之经典试题
Sep 12 面试题
C/C++程序员常见面试题二
Nov 19 面试题
了解AppleShare protocol(AppleShare协议)吗
Aug 28 面试题
静态成员和非静态成员的区别
May 12 面试题
Linux文件系统类型
Feb 15 面试题
什么是Remote Module
Jun 10 面试题
String、StringBuffer、StringBuilder有区别
Sep 18 面试题
UNIX特点都有哪些
Apr 05 面试题
如何在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 获取select下拉列表框的值
2010/05/08 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
Prototype Object对象 学习
2009/07/12 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
JS跨域总结
2012/08/30 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
js实现验证码功能
2020/07/24 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
详解python字节码
2018/02/07 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Python常见数字运算操作实例小结
2019/03/22 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
聚美优品励志广告词
2014/03/14 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
成本会计实训报告
2014/11/05 职场文书
2014年副班长工作总结
2014/12/10 职场文书