在略微格式错误的XML上使用C#的XmlReader

Roy*_* T. 9 .net c# xml malformed xmlexception

我正在尝试在大量的XML文件上使用C#的XmlReader,它们都被正确格式化,除了一些选择的(不幸的是我无法更改它们,因为它会打破很多其他代码).

这些错误只来自这些侵权XML文件的一个特定部分,可以跳过它们,但我不想停止读取XML文件的其余部分.

坏的部分看起来像这样:

 <InterestingStuff>
  ...
    <ErrorsHere OptionA|Something = "false" OptionB|SomethingElse = "false"/>
    <OtherInterestingStuff>
    ...
    </OtherInterestingStuff>
</InterestingStuff>
Run Code Online (Sandbox Code Playgroud)

所以,如果我可以忽略无效标签,或忽略管道符号,那么我会没事的.

当我看到名称"ErrorsHere"时,尝试使用XmlReader.Skip()不起作用,显然它已经提前读取并抛出异常.

TLDR:我如何跳过这样我可以使用XmlReader读取上面的XML文件?

编辑:

有人建议只更换'|'-symbol,但XmlReader的想法是不加载整个文件但只遍历你想要的部分,因为我直接从文件中读取我无法承受整个文件中的读取,替换"|"的所有实例 然后再次阅读部分:).

Hen*_*man 4

我过去对此进行过一些尝试。

一般来说,输入只需格式正确即可。当基本 XML 规则被破坏时,XmlReader 将进入不可恢复的错误状态。避免模​​式验证很容易,但这与这里无关。

您唯一的选择是清理输入,这可以以流方式(自定义 Stream 或 TextReader)完成,但这需要简单的解析形式。如果有效位置没有管道符号,这很容易。