比较2 xml的元素

时间:2015-12-29 23:37:54

标签: c# xml

我目前正在开发一个项目,我每天从客户端获取一个xml文件,我需要从中读取数据并将其加载到数据库。我实现这个的方法是,我从xsd生成一个类,使用StreamReader读取xml文件并反序列化数据,然后遍历成员并将它们添加到数据库中。

现在,我有另一个要求,即只要成员详细信息从前一天的xml文件发生更改,我才需要向数据库添加成员。我可以用相同的方式对其进行编码,并添加一个逻辑来搜索/比较前一天的xml文件中的成员详细信息,并在找到任何更改时添加该成员。

但是这个过程非常低效,因为我需要在新的xml中为每个成员迭代前一天的xml。有没有有效的方法来实现这一目标?

请提供您的建议。感谢

2 个答案:

答案 0 :(得分:0)

我建议比较不是之前的xml文件的值,而是使用insert / update命令中的DB进行比较。

IF(/* Check whether value changed code*/) BEGIN
    INSERT INTO ...
END

这样您就不必跟踪以前的xml文件等。

答案 1 :(得分:0)

这听起来像是一种可以利用数据库的功能/资源并让它进行比较/更新/插入的情况。将每日文件加载到临时表中,并运行查询或存储过程,以识别需要更新的记录,而不是尝试从c#进行此比较。

您在之前的评论中提到,这是不可能的,因为数据分布在不同的表中。如果与该数据的比较过于复杂,那么您可以在临时表中保留2天的数据 - 使用日期时间戳来区分哪个记录集是"今天"这是"昨天"。运行查询以识别相同与不同的查询,并将结果返回到c#,然后您可以继续处理数据分发/更新的逻辑。