【问题标题】:Comparing two xml files c#比较两个xml文件c#
【发布时间】:2018-04-04 14:14:08
【问题描述】:

我有两个 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 循环并逐步遍历所有条目还是最好的方法是什么? 任何帮助将不胜感激。 谢谢

【问题讨论】:

标签: c# xml


【解决方案1】:

每当我必须使用 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 属性用作Dictionary&lt;Int32, Item&gt; 中的Key,并使用Load(XElement) 更新来自其他xml 元素的更多数据,以便合并多个数据集。 然后使用ToXElement() 使用您的所有数据重新创建所需的 xml 文件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多