【问题标题】:xml file comparexml文件比较
【发布时间】:2011-05-10 10:07:38
【问题描述】:

如何从元素名称简单地比较两个 xml 文件。 如果任何元素名称不匹配,则应返回 true,否则返回 false.. 我正在使用

 var matches = from a in file1.Element("in_mind").Descendants()
                          join b in file2.Element("in_mind").Descendants() on a.Name equals b.Name
                          select new { First = a, Second = b };

            foreach (var n in matches)
                if(n.First.ToString().Intersect(n.Second.ToString()).Count()>0)
                {

                }
                else
                {
                    MessageBox.Show("not matched");
                    return;
                }

但它没有检查元素名称..

【问题讨论】:

  • 第四个问题差不多。以前的答案有什么问题?
  • 我更新了上面发布的以前的答案..但它没有在“if”条件下给出不同的值。我在 xml 文件中注释了一行但“if”循环没有中断..

标签: c# xml compare


【解决方案1】:

也许是这样的?从两个文件中获取所有后代的名称并检查它们是否相同。不知道是不是你想做的。

var elements1=(from e in file1.Element("in_mind").Descendants() select e.Name).ToList();
var elements2=(from e in file2.Element("in_mind").Descendants() select e.Name).ToList();

for(int i=0;i<elements1.Count;i++)
{
    if(elements1[i]!=elements2[i])
    {
        return false;
    }
}

return true;

【讨论】:

  • 如果你有很多节点,这不是最好的,但它可以帮助你,你可以在以后优化它。 join 的问题在于它不能确保文件是相同的,只是可能它们在某处具有相同的元素。我认为存在列表比较的功能,它更容易,所以你不必有 for 循环。
猜你喜欢
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多