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

面试题 相关文章推荐
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
Feb 08 面试题
求网格中的黑点分布
Nov 06 面试题
计算s=f(f(-1.4))的值
May 06 面试题
SQL SERVER面试资料
Mar 30 面试题
使用索引有什么好处
Jul 27 面试题
新大陆软件面试题
Nov 24 面试题
了解AppleTalk协议吗
Apr 01 面试题
override和overload的区别
Mar 09 面试题
C#中的验证控件有几种
Mar 08 面试题
进程的查看和调度分别使用什么命令
Dec 14 面试题
Linux常见面试题
Oct 04 面试题
比较一下entity bean和session bean
Dec 27 面试题
如何在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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php在window iis的莫名问题的测试方法
2013/05/14 PHP
php实现的简单日志写入函数
2015/03/31 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python读取csv文件分隔符设置方法
2019/01/14 Python
用Python逐行分析文件方法
2019/01/28 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
python实现视频读取和转化图片
2019/12/10 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
工地资料员岗位职责
2013/12/31 职场文书
晚会开幕词
2015/01/28 职场文书
56句经典英文座右铭
2019/08/09 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
Vue2.0搭建脚手架
2022/03/13 Vue.js
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers