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