如何将无效的XML加载到XmlDocument中

时间:2012-03-26 12:05:26

标签: .net xml

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

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

我想将它加载到XmlDocument中,并且它当前失败了,因为它正在处理“&lt; text&gt;”作为标签。请注意,这只是一个例子。一般问题是答案可以包含任意顺序的非转义尖括号,其中包含不同的字符。

我有哪些选择?

3 个答案:

答案 0 :(得分:0)

您可以使用Regex作为示例,并在使用XmlDocument解析它之前转义<answer> </answer>内的内容。

<answer>(.+?)</answer>匹配,并使用转义版本替换捕获的组。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

有关CData的更多详细信息,请访问here