在 C# 中检查两个 XML 文件是否相同?

2023-11-21

在 C# 中如何检查两个 XML 文件是否相同?

我想忽略 XML 文件中的注释。


安装免费的来自 NuGet 的 XMLDiffMerge 包。这个包本质上是一个重新打包的版本XML 差异和补丁 GUI 工具来自微软。

该函数返回true如果两个 XML 文件相同,则忽略注释、空格和子顺序。作为奖励,它还可以计算出差异(请参阅内部变量differences在函数中)。

/// <summary>
/// Compares two XML files to see if they are the same.
/// </summary>
/// <returns>Returns true if two XML files are functionally identical, ignoring comments, white space, and child
/// order.</returns>
public static bool XMLfilesIdentical(string originalFile, string finalFile)
{
    var xmldiff = new XmlDiff();
    var r1 = XmlReader.Create(new StringReader(originalFile));
    var r2 = XmlReader.Create(new StringReader(finalFile));
    var sw = new StringWriter();
    var xw = new XmlTextWriter(sw) { Formatting = Formatting.Indented };

    xmldiff.Options = XmlDiffOptions.IgnorePI | 
        XmlDiffOptions.IgnoreChildOrder | 
        XmlDiffOptions.IgnoreComments |
        XmlDiffOptions.IgnoreWhitespace;
    bool areIdentical = xmldiff.Compare(r1, r2, xw);

    string differences = sw.ToString();

    return areIdentical;
}   

以下是我们如何调用该函数:

string textLocal = File.ReadAllText(@"C:\file1.xml");
string textRemote = File.ReadAllText(@"C:\file2.xml");
if (XMLfilesIdentical(textLocal, textRemote) == true)
{
    Console.WriteLine("XML files are functionally identical (ignoring comments).")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中检查两个 XML 文件是否相同? 的相关文章

随机推荐

  • GtkGLArea 小部件 (GTK+) 的 Vulkan 等效项是什么?

    背景 我想编写一个 CAD 应用程序 我想用Vulkan实现所有渲染 我想使用 GTK 我不想要一个 可见的 不同的窗口来显示对象的渲染图像 所以我研究并发现GtkGLAreawidget 它似乎可以满足我的需求 但是对于 OpenGL 有
  • UIView 隐藏属性...还有更多吗?

    来自 ActionScript 我会将 Sprites 设置为visible false 以防止它们在布局等内容中被计算 并确保它们不会响应事件 在 iOS 开发中 我将继续这样做 如果不需要 UIView 我可以将其 alpha 动画设置
  • 在 .NET 2.0 中将位图转换为一张多页 TIFF 图像

    如何将位图数组转换为 TIFF 格式的全新图像 并将所有位图作为帧添加到这个新的 tiff 图像中 使用 NET 2 0 从第一个位图开始 将其放入 Image 对象中 Bitmap bitmap Bitmap Image FromFile
  • 一切都是一种表达

    我注意到许多语言 如 Ruby 和 CofeeScript 以及转编译器 都支持表达式 现在 它使语言变得更容易理解 并且表面上看起来确实很简洁 但我可能正在寻找一些关于这两种方法的积极和消极的学术出版物 如果出版物有明确的例子来比较将一切
  • 我可以在 OpenGL ES 中指定每个面的法线并实现非平滑/平坦着色吗?

    我想在 OpenGL ES 2 0 中显示网格模型 它清楚地显示实际的网格 所以我不希望每个图元 三角形上都有平滑的着色 我能想到的唯一两个选择是 每个三角形都有自己的一组法线 所有法线都垂直于三角形表面 但我想我无法使用此选项在三角形之间
  • sql查询的where子句中的if条件

    下面是当我想要特定用户的数据时查询的 where 子句 where Completion Date gt 11 01 2011 and Completion Date lt 12 11 2012 and System user id 123
  • CoreGraphics 中的浮点比较(相等)

    Apple CoreGraphics framework CGGeometry h CG INLINE bool CGSizeEqualToSize CGSize size1 CGSize size2 return size1 width
  • 当可变参数模板不是最后一个参数时如何重载它们

    基本上这个问题可以用这个例子来概括 template
  • javascript 函数中 () 和 {} 有什么区别? [复制]

    这个问题在这里已经有答案了 这些函数似乎在 React 教程中可以互换使用 但无法弄清楚其中的区别 或者何时使用哪个 const SomeVal gt const SomeVal gt 这些是根本不同的 以前的箭头函数语法 gt 允许您在箭
  • 如何将时间跨度转换为下午或上午时间?

    我以 UTC 时间存储用户时间 当我显示它时 我需要将其转换为上午下午时间 这是数据库中的示例 我将 17 00 00 转换为下午 5 00 这是我到目前为止所想到的代码 但它不起作用 var time DateTime ParseExac
  • C++ 指向非静态成员函数的函数指针(类成员)

    class Foo public Foo do something Foo func x int Foo do something int function pointer to class member function void set
  • NSDateFormatter“HH”在 iOS 8 设备上返回 am/pm [重复]

    这个问题在这里已经有答案了 我现在很困惑 我一直很高兴地使用 NSDateFormatter 没有出现任何问题 但今天我注意到我的一个应用程序在运行 iOS 8 1 3 的 iPhone 6 plus 设备上给了我疯狂的结果 而在其他设备
  • 将 get/set 函数附加到 js 中的对象属性

    我本质上有一个对象 var foo function this setting false this refresh function let a new foo a setting true a refresh is triggered
  • Selenium Webdriver 与 Python - driver.title 参数

    我是 Python 和 Selenium 的新手 driver title参数是如何得出的 下面是一个简单的网络驱动程序脚本 如何找到 driver x 的其他参数有与使用单元测试模块中的各种断言 import unittest from
  • MouseMove 事件每秒重复一次

    http jsfiddle net MrkY9 我的计算机 到目前为止 我的同事中没有其他计算机 在 Chrome IE 和 Safari 但在 Firefox 中没有 中出现问题 简单的mousemove代码 例如下面的 已经在上面的小提
  • 如何pickle __main__ (python)中定义的函数/类

    我希望能够从 main 中腌制一个函数或类 但有一个明显的问题 在其他帖子中提到 腌制的函数 类位于 main 命名空间中 并且在另一个脚本 模块中取消腌制将失败 我有以下可行的解决方案 是否有理由不这样做 myscript py 中的内容
  • OpenCV Python cv2.perspectiveTransform

    我目前正在尝试使用 OpenCV 和 Python 进行视频稳定 我使用以下函数来计算旋转 def accumulate rotation src theta x theta y theta z timestamps prev curren
  • Android:在一个屏幕上查看两个活动

    我正在寻找同时显示两个活动的最简单方法 以便一个活动始终保持可见 而另一个活动则随着用户交互而变化 换句话说 我目前有一个包含多个活动的程序的代码 用户可以在这些活动之间导航 我想添加一个新的活动 该活动将始终与我已有的活动一起可见 当用户
  • 使用 POCO 的 C++ Http 请求

    我想知道如何使用 C 中的 POCO 向 URL 发出请求 例如下载图片并保存 到目前为止我得到了这个小代码 include
  • 在 C# 中检查两个 XML 文件是否相同?

    在 C 中如何检查两个 XML 文件是否相同 我想忽略 XML 文件中的注释 安装免费的来自 NuGet 的 XMLDiffMerge 包 这个包本质上是一个重新打包的版本XML 差异和补丁 GUI 工具来自微软 该函数返回true如果两个