比较2 xml';中的元素;s
本文关键字:元素 xml 比较 | 更新日期: 2023-09-27 18:28:30
我目前正在做一个项目,每天从客户端获取一个xml文件,我需要从中读取数据并将其加载到数据库中。我实现这一点的方式是,我从xsd生成了一个类,并使用StreamReader读取xml文件,对数据进行反序列化,然后循环成员并将它们添加到数据库中。
现在,我得到了另一个要求,即只有在成员详细信息与前一天的xml文件不同的情况下,我才需要向数据库添加成员。我可以用同样的方式进行编码,并添加一个逻辑来搜索/比较成员详细信息与前一天的xml文件,如果发现任何更改,则添加成员。
但是这个过程效率很低,因为我需要为新xml中的每个成员遍历前一天的xml。有什么有效的方法可以做到这一点吗?
请提供您的建议。感谢
我建议不要通过以前的xml文件来比较值,而是通过insert/update命令中的DB来比较值。
IF(/* Check whether value changed code*/) BEGIN
INSERT INTO ...
END
这样,您就不必跟踪以前的xml文件等。
在这种情况下,您可以利用数据库的功能/资源,让它进行比较/更新/插入。将您的日常文件加载到临时表中,并运行一个查询或存储过程来确定哪些记录需要更新,而不是尝试从c#进行比较。
您在前面的评论中提到,这是不可能的,因为数据分布在不同的表中。如果与该数据的比较过于复杂,那么您可以在暂存表中保留两天的数据,并使用日期时间戳来区分哪些记录集是"今天",哪些是"昨天"。运行一个查询来识别相同与不同,并将结果返回到c#,然后您可以继续使用处理数据分发/更新的逻辑。