比较两个xml文件c#

时间:2018-04-04 14:14:08

标签: c# xml

我有两个XML文件,我想在C#应用程序中进行比较。我正在使用XDocument,我想加载两个XML文件(具有静态文件名和目录)并搜索并根据匹配值附加一个条目。 我的一个XML文件包含以下结构,如下所示:

<Code>0000890</Code>
<Device_Name>Device1</Device_Name>
<Time>11:06:18.836 </Time>   </body>

第二个XML文件的结构如下:

<ID>0000890</ID>
<FirstName>John</FirstName>
<LastName>Doe</LastName>   </body>

我想要读取这两个文件并匹配ID和Code相同的记录,但还要附加第一个XML文件以及第二个XML文件中的其他详细信息。所以在匹配的情况下,id最终会出现:

<ID>0000890</ID>
<FirstName>John</FirstName>
<LastName>Doe</LastName>   
<Device_Name>Device1</Device_Name>
<Time>11:06:18.836 </Time>   </body>

我应该使用foreach循环并逐步完成所有条目或最佳方法是什么? 任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

每当我必须使用xml时,我宁愿将所有内容反序列化为对象,这样我就能以安全的方式处理它们。

在你的情况下我会有这个:

public class Item {
    public Int32 ID { get; set; }
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String DeviceName { get; set; }
    public TimeSpan Time { get; set; }

    public Item(XElement xElement) {
        Load(xElement);
    }

    public void Load(XElement xElement) {
        // your code to grab values goes here
    }

    public XElement ToXElement() {
        // your code to create the xml representation goes here
    }
}

然后我只是从你的文件中获取所有相关的xml元素并将它们提供给构造函数。您可以将ID属性用作Key中的Dictionary<Int32, Item>,并使用Load(XElement)更新来自其他xml元素的更多数据,以便合并多个数据集。 然后使用ToXElement()重新创建包含所有数据的所需xml文件。

更新:在序列化和反序列化您的值时,请务必使用XmlConvert