XML解析器验证报告

XML解析器验证报告,xml,validation,Xml,Validation,大多数XML解析器在文档中出现第一个错误后都会放弃。事实上,IIRC,这实际上是解析器“官方”规范的一部分 我在寻找能打破这条规则的东西。它应该使用一个给定的模式(假设一个有效的模式)和一个xml输入,并尝试在第一个错误之后继续运行,或者为每个错误引发一个事件,或者在完成时返回一个列表,这样我就可以使用它生成文档中错误的某种报告。这个要求来自上面,所以让我们尽量保持纯粹主义者的“但继续”评论到最低限度是没有意义的 我正在寻找能够评估文档是否格式良好以及是否符合模式的东西。理想情况下,它会将这些错

大多数XML解析器在文档中出现第一个错误后都会放弃。事实上,IIRC,这实际上是解析器“官方”规范的一部分

我在寻找能打破这条规则的东西。它应该使用一个给定的模式(假设一个有效的模式)和一个xml输入,并尝试在第一个错误之后继续运行,或者为每个错误引发一个事件,或者在完成时返回一个列表,这样我就可以使用它生成文档中错误的某种报告。这个要求来自上面,所以让我们尽量保持纯粹主义者的“但继续”评论到最低限度是没有意义的

我正在寻找能够评估文档是否格式良好以及是否符合模式的东西。理想情况下,它会将这些错误评估为不同的错误类别。我更喜欢.Net解决方案,但我也可以使用独立的.exe。如果你知道有一个网站使用不同的平台,那就继续发布吧,因为其他人可能会发现它很有用

更新:

我希望我使用的大多数文档都是格式良好的。可能是&作为数据包含,而不是&这里和那里,或者偶尔错误放置标记。我不期望解析器能够从任何事情中恢复,只是为了尽最大努力继续。如果一个文档太不正常,它应该尽可能多地吐出一些“致命的,无法继续”的错误。否则,模式验证部分相当简单

事实上,IIRC,这实际上是解析器“官方”规范的一部分

官方不需要引用:)

致命错误

[定义:]一致性XML处理器必须检测并向应用程序报告的错误。遇到致命错误后,处理器可继续处理数据以搜索更多错误,并可向应用程序报告此类错误。为了支持错误更正,处理器可以将文档中未处理的数据(混合字符数据和标记)提供给应用程序。但是,一旦检测到致命错误,处理器不得继续正常处理(即,不得继续以正常方式将字符数据和有关文档逻辑结构的信息传递给应用程序)


您可以与恢复选项一起使用。

听起来像是您想要的。这可能不是您想要的,但就糟糕的文档处理解析器而言,这是金标准。

有一个选项,您可以在出现致命错误后尝试继续:

http://apache.org/xml/features/continue-after-fatal-error

True:出现致命错误后,尝试继续分析。
False:在出现第一个致命错误时停止分析
默认值:false
注意:行为 设置此功能时的语法分析器 真的是不确定的!因此使用 这项功能极为谨慎 因为解析器可能会陷入 无限循环或更糟