【问题标题】:How do I validate this kind of xml errors in the c# code?如何在 c# 代码中验证这种 xml 错误?
【发布时间】:2017-04-01 08:38:32
【问题描述】:
<?xml version="1.0" encoding="utf-8"?>
<xml>
  <a>str1234</a>xxxx
</xml>

我得到了这个xml文件,如你所见,“a”结束标记后有“xxxx”。

我尝试了xmldocument.load() 方法,但它不会抛出任何异常。

我试图从这个 xml 生成一个 xsd 文件,然后用生成的 xsd 验证这个 xml。

但是,它也不会抛出任何错误。

【问题讨论】:

  • “可能”,因为这是有效的 xml ...
  • 但是当我的代码加载这种 .config 文件时,它卡住了。
  • 你要序列化并获取输出吗?或者你需要什么?请明确说明
  • 哦,K。这是一个有效的 xml 文件。为什么会显示错误?
  • 只是为了呼应其他 cmets,这是完全有效的 XML。您需要提供一个 minimal reproducible example 来证明您遇到的问题。 '加载这种.config文件的代码'是什么意思?'卡住了'是什么意思?

标签: c# xml xsd


【解决方案1】:

了解difference between valid and well-formed XML 很重要。

评论者草率地说您的 XML 有效。他们实际上不应该在没有评估有效性的模式的情况下发表这样的声明。他们应该说您的 XML 格式正确

您似乎担心xxxx 文本作为a 元素的兄弟元素格式不正确,但它是格式完全正确的XML。它也可能是有效的,如果父元素xml 由模式定义以允许混合内容

我试图从这个 xml 生成一个 xsd 文件,然后验证这个 xml 使用生成的 xsd。

好吧,如果您使用工具从 XML 文档实例生成 XSD,并且 XSD 表明 XML 是有效的,那么该工具正在按设计工作。

但是当我的代码加载这种 .config 文件时,它卡住了。

就像格式正确并不能保证有效性一样,它也不能保证它满足任何给定的消费 XML 应用程序的需求。配置文件具有 XML 必须遵循的规则(可能以 XSD 表示)。除了格式良好(解析器解析 XML 所需的规则)之外,这些规则也是如此。

另见How to validate xml code file though .NET? + How would I do it if I use XML serialization?

【讨论】:

  • 很好的答案,老兄。它解决了我的问题。我只需要找出复杂类型是否混合。如果是混合的,那不是我想要的正确 xml。
  • 不客气。如果有帮助,请accept这个答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多