Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较XML文件以确定差异_C#_Xml_Xml Parsing - Fatal编程技术网

C# 比较XML文件以确定差异

C# 比较XML文件以确定差异,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我一直在四处寻找,虽然有几个选择,但没有一个真正适合我目前的问题 我得到了两个XML文件,File1和File2,它们有“User”节点和childnodes,详细说明了名称、年龄、地址等内容。从那里我需要创建第三个XML文件3,它专门包含在这两个文件之间更改的字段,同时保留“name”节点,以标识更改是由该用户完成的 因此,如果我得到: File 1: <users> <user> <name>Marco</name> <heig

我一直在四处寻找,虽然有几个选择,但没有一个真正适合我目前的问题

我得到了两个XML文件,File1和File2,它们有“User”节点和childnodes,详细说明了名称、年龄、地址等内容。从那里我需要创建第三个XML文件3,它专门包含在这两个文件之间更改的字段,同时保留“name”节点,以标识更改是由该用户完成的

因此,如果我得到:

File 1:
<users>
 <user>
  <name>Marco</name>
  <height>1,76</height>
  <address>C:/ Far-away 34</address>
  <mail>marco@marco</mail>
 </user>
</users>

File 2:
<users>
 <user>
  <name>Marco</name>
  <height>1,80</height>
  <address>C:/ Far-away 34</address>
  <mail></mail>
 </user>
</users>
文件1:
马可
1,76
C:/很远34
marco@marco
文件2:
马可
1,80
C:/很远34
它应该发出一个包含以下内容的XML:

File 3:
<users>
 <user>
  <name>Marco</name>
  <height>1,80</height>
  <mail></mail>
 </user>
</users>

文件3:
马可
1,80
我的一个主要问题是除了“name”之外,没有人告诉我将出现哪些节点(或者它们是否有子节点)

编辑:用户只显示一次,节点可以按任意顺序排列,节点数量不固定。

您可以使用

将XML反序列化为XElement对象,然后可以逐个比较子节点


如果您知道该XMLs中可能出现的所有节点,那么可以将该XMLs直接反序列化为C#对象。但使用XElement类,您可以实现更通用的解决方案。

您需要定义这需要有多智能。子元素可以按任何顺序排列吗?可以有多个名为Marco的用户吗?是否可以有多个子元素名为“mail”?等等。如果第二个文件中缺少一个元素,它如何处理?需要更多的示例数据来正确处理。过去也做过类似的工作。我同意Chuck的观点,只是回答他的问题通常是不够的。看实际输入是否更好。