我有两个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循环并逐步完成所有条目或最佳方法是什么? 任何帮助将不胜感激。 谢谢
答案 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
。