我通过以下两种技术阅读XML文件。
XElement.Parse(File.ReadAllText(xmlfile))
读取整个XML
注意:我知道我不应该使用这种技术。XDocument.Load(xmlfile);
然后我尝试通过以下代码片段创建XElement列表。对我来说,结果看起来相同,但是当我尝试比较两个IEnumerable对象时,它们并不相同。
我在俯瞰。这是代码段
// Read the xml db file.
XElement xEle = XElement.Parse(File.ReadAllText(xmlfile));
XDocument xDoc = XDocument.Load(xmlfile);
List<XElement> xElementCollection = xEle.Elements("Map").ToList();
List<XElement> xDocumentCollection = xDoc.Descendants("Map").ToList();
bool bCompare = xElementCollection.Equals(xDocumentCollection);
b比较结果为false,但是当我查看两个列表的数据时。它们看起来一样。
答案 0 :(得分:1)
您基本上需要遍历两个列表中的每个元素,并使用XNode.DeepEquals方法按值将它们相互比较。
if (xElementCollection.Count != xDocumentCollection.Count)
{
bCompare = false;
}
else
{
bCompare = true;
for (int x = 0, y = 0;
x < xElementCollection.Count && y < xDocumentCollection.Count; x++, y++)
{
if (!XNode.DeepEquals(xElementCollection[x], xDocumentCollection[y]))
bCompare = false;
}
}