.net 如何将无效XML加载到XmlDocument中

.net 如何将无效XML加载到XmlDocument中,.net,xml,.net,Xml,我知道一些数据(由遗留应用程序生成)是无效的XML,例如: <document> <dossier> <answers> <answer>Ref=some <text> here</answer> </answers> </dossier> </document> Ref=这里有一些 我想将其加载到一个XmlDocument中,但它当前失败,因为它

我知道一些数据(由遗留应用程序生成)是无效的XML,例如:

<document>
  <dossier>
    <answers>
      <answer>Ref=some <text> here</answer>
    </answers>
  </dossier>
</document>

Ref=这里有一些
我想将其加载到一个XmlDocument中,但它当前失败,因为它将“”视为标记。请注意,这只是一个例子。一般的问题是,答案可以包含任意顺序的、中间有不同字符的未替换尖括号


我有哪些选项?

例如,您可以使用Regex,在使用XmlDocument解析之前转义
中的内容


匹配类似于
(.+?)
的内容,并用转义版本替换捕获的组。

使用。这可以处理无效/格式错误的标记,它做得很好。

最简单的方法是将有问题的XML包装到CData部分。这样,生成的XML文档可能如下所示:

<wrapper>
    <![CDATA[
        <document>
          <dossier>
            <answers>
              <answer>Ref=some <text> here</answer>
            </answers>
          </dossier>
        </document>
    ]]>
</wrapper>


.

您不能将无效的XML加载到
XmlDocument
中。也许您应该自己尝试避开尖括号?格式错误的部分是否总是只存在于文档的已知部分(例如xpath:/document/dossier/answers/answer)中,或者是否会到处出现?吹毛求疵:这不是“无效”xml,这是“格式错误”xml(即格式不正确)。“Valid”/“Invalid”实际上是为xml是否对给定模式有效而保留的术语。“格式良好”/“格式不良”是描述类似xml的文本是否真的可以被视为xml的术语。Rob Levine,它只会出现在/document/dossier/answers/answer中。虽然Andrew Bullock在技术上是正确的,但这可能对我适用,因为“xml”非常简单,而且答案标记只出现在这个位置,答案标签不太可能包含或。在我接受之前,我需要做更多的测试,但是谢谢你的想法。不客气。我也像你一样认为:重要的是完成它。如果您事先知道xml有什么问题,您可以将其视为文本处理来解决。如果你需要猜出哪里出了问题,那你就有问题了。在您的情况下,我相信它会起作用。谢谢,但正如我所说,XML是由遗留应用程序生成的,我不能更改它。@matthewk您不需要更改正在生成的XML。将此XML保存到XmlDocument时,您可以将其包装到CData部分。或者这也是不可接受的?抱歉,也许我在原始问题中没有明确说明,但我需要在将XML加载到XmlDocument中后能够处理它。