如果我有2个XML字符串,除了每个字符串中的时间戳可能略有不同之外,我如何确定它们是否相同?换句话说,我想在进行比较时忽略每个XML中的日期/时间值。
以下是一个示例(显示每个XML的相关部分):
XML 1:
<actionSetID>2017_01_03_20_03_52_04_0001</actionSetID><lastModifiedDateTime dt=""dateTime"">2017-01-03T20:01</lastModifiedDateTime>
XML 2:
<actionSetID>2017_01_03_20_01_07_04_0001</actionSetID><lastModifiedDateTime dt=""dateTime"">2017-01-03T20:03</lastModifiedDateTime>
答案 0 :(得分:0)
一种方法是将XML字符串解析为XDocuments,并使用Linq删除不需要的节点,然后比较生成的字符串。一个限制是元素必须是相同的顺序。如果你试图比较来自同一来源的xml字符串,虽然这可能是一个合理的期望。
public static void Main()
{
var xDoc = XDocument.Parse(xmlString);
var xDoc1 = XDocument.Parse(xmlString1);
Console.WriteLine(xDoc.ToString().Equals(xDoc1.ToString()));
xDoc.Elements().Elements("lastModifiedDateTime").Remove();
xDoc1.Elements().Elements("lastModifiedDateTime").Remove();
Console.WriteLine(xDoc.ToString().Equals(xDoc1.ToString()));
}
private static string xmlString = @"<action><actionSetID>2017_01_03_20_03_52_04_0001</actionSetID><lastModifiedDateTime dt=""dateTime"">2017-01-03T20:01</lastModifiedDateTime></action>";
private static string xmlString1 = @"<action><actionSetID>2017_01_03_20_03_52_04_0001</actionSetID><lastModifiedDateTime dt=""dateTime"">2017-01-03T20:03</lastModifiedDateTime></action>";
输出
False
True