首页 新闻 搜索 专区 学院

求一个比对的算法题

0
悬赏园豆:30 [已解决问题] 解决于 2008-12-22 17:43

有一个XML  1_book.xml,格式如下:

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<Books>
 <Book Title="A" Author="A1" Price="A2"/>
 <Book Title="B" Author="B1" Price="B2"/>
 <Book Title="C" Author="C1" Price="C2"/>
 <Book Title="D" Author="D1" Price="D2"/>
</Books>

现在新生成了一个格式如上的XML,如果其中某一条中的 Title和Author的值在原有文件中存在,不做任何操作,继续往下运行;如果新生成的XML中,其中一条信息在原有的1_book.xml不存在,需追加到该文件的最后一下记录;如果原有文件中的其中一条与新增的的XML相比较不存在,需把该条记录删除。

各位有没有什么好的算法呀?

金鱼的主页 金鱼 | 小虾三级 | 园豆:1090
提问于:2008-12-15 16:43
< >
分享
最佳答案
0

把两个 xml 文档中的数据分别读到两个 Dictionary 里面,相互查找就可以了。

 

大概就是下面这段代码的意思。

Dictionay oldDict = new Dictionay ();
Dictionay newDict = new Dictionay ();

//以下是伪代码
//将老XML读入到oldDict中

//Title为key Author 为Value
foreach (xmlItem item in oldXmlItems)
{
oldDict.Add(item["Title"], item["Author"]);
}

//将新XML读入到newDict中
//Title为key Author 为Value
foreach (xmlItem item in newXmlItems)
{
newDict.Add(item["Title"], item["Author"]);
}

//新文件中存在老文件不存在,增加
foreach(string title in newDict.Keys)
{
if (oldDict.Contains(title))
{
if (oldDict[title] == newDict[title])
{
continue;
}
}

Add to old XML....
}

//老文件中存在新文件不存在,删除
foreach(string title in oldDict.Keys)
{
if (!newDict.Contains(title))
{
Delete from old xml...
}

}

eaglet | 专家六级 |园豆:17119 | 2008-12-15 16:52
其他回答(3)
0

我怎么看你的意思就是把以前的文件覆盖啊。。。。

BB_Coder | 园豆:895 (小虾三级) | 2008-12-15 18:45
0

路过,学习了....

Jared.Nie | 园豆:1940 (小虾三级) | 2008-12-15 23:18
0

好像是文件覆盖, 希望您再说明清楚一点, 是不是求两个xml文件的 并集.

Liu Changfeng | 园豆:60 (初学一级) | 2008-12-17 10:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册