有一个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相比较不存在,需把该条记录删除。
各位有没有什么好的算法呀?
把两个 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...
}
}
我怎么看你的意思就是把以前的文件覆盖啊。。。。
路过,学习了....
好像是文件覆盖, 希望您再说明清楚一点, 是不是求两个xml文件的 并集.