如何通过.NET验证xml代码文件? + 如果我使用 XML 序列化,我该怎么做?

2023-12-10

我希望用户能够将数据导出为 XML 文件。当然,我希望他们稍后能够导入相同的 XML 文件,但他们总是可以更改它,或者它可能是不同的 XML 文件。

所以我想验证 XML 文件以检查它是否采用我期望的格式。所以我想我需要像模式这样的东西来检查它是否必须通过代码。

所以如果我期望

<Root>
 <Something>
    <SomethingElse> </SomethingElse>
 </Something>
</Root>

除了我期望的格式之外,我不希望文件中包含其他格式。

另外我将如何验证字段?就像我要求标签之间必须有一些文本一样。如果为空,则文件无效。

那么我该怎么做呢?

Edit

我决定使用 XML 序列化,因此我知道如果格式错误,它会抛出异常并忽略不起作用的内容。但是,我不确定是否应该通过它和 C# 来验证每条记录,还是应该尝试创建一个 xml 模式来执行此操作。

如果我想通过 xml 模式和 xml 序列化来完成它,那将如何工作?就像我首先做一些像我在回复中看到的事情然后将其反序列化吗?或者我该怎么做?


您可以使用以下代码片段来执行此操作:

using (FileStream stream = File.OpenRead(xsdFilepath))
{
    XmlReaderSettings settings = new XmlReaderSettings();

    XmlSchema schema = XmlSchema.Read(stream, OnXsdSyntaxError);
    settings.ValidationType = ValidationType.Schema;
    settings.Schemas.Add(schema);
    settings.ValidationEventHandler += OnXmlSyntaxError;

    using (XmlReader validator = XmlReader.Create(xmlPath, settings))
    {
        // Validate the entire xml file
        while (validator.Read()) ;
    }
}

当发生语法错误时,将调用 OnXmlSyntaxError 函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过.NET验证xml代码文件? + 如果我使用 XML 序列化,我该怎么做? 的相关文章

  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 使用 powershell 将 XML 转换为特定的 JSON 结构

    需要有关将 xml 转换为特定 json 结构的帮助 XML 看起来像这样

随机推荐

  • 使用 iText7 从 PDF 中提取文本。如何提高其性能?

    目前 我使用此代码从矩形 区域 中提取文本 public static class ReaderExtensions public static string ExtractText this PdfPage page Rectangle
  • 如何在 Grails 2.0 中从 war 文件中排除资源?

    我的 Grails 2 应用程序中有一些测试数据 其中包含一些特殊内容 图像 视频等 在构建战争时不应包含这些内容 在开发时 这些文件存储在web app content 那么问题来了 在生产环境构建战争时如何排除它们呢 在我的搜索过程中我
  • 从上下文菜单复制文件的父目录路径

    我正在学习批处理脚本 因为它对于设置 Windows 用户选择的一些快速自定义上下文菜单选项来获取文件及其父目录的路径非常有用 现在我知道以下命令将传递的参数作为文件路径并将其复制到剪贴板 cmd c echo set p 1 clip 但
  • Extjs网格面板一列背景颜色更改另一列值

    我有一个 Extjs 编辑器网格面板 在其中我必须根据另一列值的值更改一列的 css 那么如何做到这一点我无法使用渲染器功能 因为它在 onload 上工作还有其他方式我附加代码吗其中我有性别列和 ID 列 因此当性别列选择男性时 ID 的
  • 更改不同分辨率下的 flexbox-direction

    为什么在低于 800px 的分辨率下 flex direction 不会改变 这些项目仍然在一排 如果我想更改不同分辨率的顺序 也会发生同样的情况 这是 HTML 和 CSS body font weight bold text align
  • LDAPS 未与 PHP 连接

    我在使用 Windows 连接到安全 LDAP 服务器时遇到问题 而且我在网上到处都看到同样的情况 但到目前为止还没有有效的解决方案 我尝试过同时使用 IIS 和 WAMPSERVER 我已将 libeay32 dll 和 ssleay32
  • 在 Node.js 中等待多个回调的惯用方法

    假设您需要执行一些依赖于某些临时文件的操作 自从 我们这里讨论的是 Node 这些操作显然是异步的 等待所有操作完成的惯用方法是什么 知道什么时候可以删除临时文件吗 这是一些显示我想要做什么的代码 do something tmp file
  • 在活动之间传递自定义对象

    我尝试过在这里和许多其他网站找到的许多不同的解决方案 但我就是无法使其工作 我在一项活动中有一个对象 公寓 该对象将在另一项活动中使用 该活动从类 MyMapOverlayItem 启动 并应启动应在其中使用 Apartment 对象的 A
  • 如何使安装在不同aws实例上的docker中的Hazelcast节点相互交互?

    我有三台 aws 机器 在上面设置了三个 docker 容器 并在其上安装了 hazelcast 3 5 4 ubuntu 将 aws 配置设置为我通常使用 Hazelcast 执行的操作 没有 docker 节点不会相互发现 如何让他们互
  • 在 ASP.NET RegularExpressionValidator 中使正则表达式不区分大小写

    给定这个正则表达式 0 9 s lbs kg kgs 我如何使其不区分大小写 我试图在 net 正则表达式验证器中使用它 因此我需要在模式中指定不区分大小写 我无法以编程方式使用 RegexOptions 因为我在 RegularExpre
  • 检查矩阵中的列或对角线是否 = x(不使用 Numpy)

    我可以使用此代码来检查矩阵中的一行是否 x q 1 2 1 1 2 1 2 1 2 answer sum row for row in q for i in range 0 len q if answer i 6 print Player
  • rbenv 安装的 ruby​​ 2.1.2 无法在 MAC OSX 10.9.2 上加载此类文件 -- zlib

    我通过 rbenv 安装 ruby 2 1 2 rbenv 是通过 homebrew 在我的 MAC OSX 10 9 2 上安装的 ruby global 成功设置为 2 1 2 但是当我尝试运行 gem install 时 出现以下错误
  • 如何使三根柱子高度相同?

    我已经查看了这个问题的十几个问题和答案 但似乎没有一个适合我的情况的最佳答案 我有一个页面 http awesomealbums info 1062 chris cornell 具有三个垂直列 我希望各列看起来具有相同的高度 无论其中是否有
  • 使用 pandas 对数据框进行排序。保持柱子完好无损

    如下图所示 我想按以下方式对聊天进行排序Type按字母顺序排列 不过 我不想打乱顺序 Date User id 每个内Chat name 鉴于我的输入数据框位于左侧 我应该如何执行此操作 在Python中使用Pandas 您想使用对值进行排
  • AVPlayerLayer 显示黑屏但声音正常

    我正在尝试在中显示本地录制的视频AVP播放器层哪个有效有时 我可以听到录制视频中的音频 但看不到视频 有时视频和音频都可以工作 有时只有音频 我都尝试过AVP播放器层 and AVPlayerViewController但这两种情况都会出现
  • 对没有默认构造函数的控件使用 XamlReader

    我有一些 Xaml 对象的字符串表示形式 并且我想构建控件 我正在使用XamlReader Parse函数来执行此操作 对于像 Button 这样的简单控件 它有一个不带任何参数的默认构造函数 这样可以很好地工作 var buttonStr
  • 1.7+ 中的 jQuery live() 与 on()

    我知道从 jQuery 1 7 开始 live 方法已被弃用 所以这就是我想出的 document body on click list function console log this 这几乎可以达到目的并且相当于 list live
  • 如何将 JSON 数组值传递到 Jasper Reports 子报表中?

    Jasper 报告和子表有问题 我正在使用以下 JSON 格式 dataObjects objectId 025b3873ebe640aa9d6a34f9306548ae employeeFullName John Smith employ
  • Next.js - Eslint 不会在开发模式下检查任何页面(pages/_app.js 除外)

    我在使用 Next js 设置 eslint 时遇到问题 当我运行时 它实际上正确地检查了我的所有文件next build 但是当我在开发模式下运行应用程序时 next eslint 实际上只是 lintspages app js 并完全忽
  • 如何通过.NET验证xml代码文件? + 如果我使用 XML 序列化,我该怎么做?

    我希望用户能够将数据导出为 XML 文件 当然 我希望他们稍后能够导入相同的 XML 文件 但他们总是可以更改它 或者它可能是不同的 XML 文件 所以我想验证 XML 文件以检查它是否采用我期望的格式 所以我想我需要像模式这样的东西来检查