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

面试题 相关文章推荐
RealTek面试题
Jun 28 面试题
C++:memset ,memcpy和strcpy的根本区别
Apr 27 面试题
SQL Server里面什么样的视图才能创建索引
Apr 17 面试题
介绍一下SQL注入攻击的种类和防范手段
Feb 18 面试题
私有程序集与共享程序集有什么区别
Apr 05 面试题
网络体系结构及协议的定义
Mar 13 面试题
linux比较文件内容的命令是什么
Sep 23 面试题
Linux操作面试题
May 16 面试题
ShellScript面试题一则-ShellScript编程
Jun 24 面试题
什么是servlet链?
Jul 13 面试题
介绍一下Ruby的多线程处理
Feb 01 面试题
顺丰快递Java软件工程师面试题
Jul 31 面试题
如何在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/21 PHP
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
python读写二进制文件的方法
2015/05/09 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python学生信息管理系统(完整版)
2020/04/05 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
利用python汇总统计多张Excel
2020/09/22 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
物业总经理助理岗位职责
2014/06/29 职场文书
生物学专业求职信
2014/07/23 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
优秀党员推荐材料
2014/12/18 职场文书
学校运动会加油词
2015/07/18 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
python井字棋游戏实现人机对战
2022/04/28 Python