有没有人为.NET制作/制造/销售容错XML阅读器?
是的,我知道,XML并不是为了在其中出现错误而应该被拒绝,如果它无效......等等等等。但遗憾的是现实世界并不完美,开发人员确实犯了错误,我仍然希望能够阅读他们的提要,即使我在这里或那里错过了奇怪的元素,因为它没有正确编码或者在其中有其他错误。 所以请,没有答案“修复来源”或“拒绝它”。
那么,是否有人能够恢复和处理XML文件中的常见错误?
答案 0 :(得分:13)
正是因为现实世界并不完美,所以XML被如此广泛地使用。容错XML解析器的功能规范是什么?这是一个开放式的问题。解析格式良好的XML的所有变体而不试图猜测所有可能的错误是很困难的。
[...等待downvote。]
答案 1 :(得分:3)
环顾HTML Parser,'因为html几乎是xml
答案 2 :(得分:3)
首先通过Beautiful Soup运行XML。这将清除您的错误XML,以便正确解析
答案 3 :(得分:2)
对于RSS提要的特定情况和单个损坏项目条目的特定情况,您可以使用XmlTextReader分别手动读取每个项目,处理无效项目的XmlException。当发生异常时,您将需要使用新的Reader实例,因为原始的Reader已被清除。您仍需要使用有效的<item>
和</item>
标记来标识每个项目,但您将能够从每个项目中的损坏数据中恢复。
答案 4 :(得分:1)
是的,我知道这是一个古老的问题,但最近我一直在寻找宽容的xml解析器并找到以下内容:XmlParser。
Roslyn启发的全保真XML解析器,没有依赖关系和 简单的Visual Studio XML语言服务。
解析器生成一个完全保真的语法树,意味着每一个 源文本的字符在树中表示。那个树 涵盖整个源文本。解析器没有依赖关系,可以 容易携带。
您可以在项目中添加Nugets。我尝试了这个解析器,它可以读取任何XML文件。