在针对4.6

时间:2018-05-16 14:49:08

标签: c# xml-parsing dtd-parsing

我有一个用c#编写的汇编,它对输入字符串进行DTD验证。它使用XMLReaderSettings.ValidationTpe = ValidationType.DTD和XMLReaderSettings.ProhibitDtd = false。 在针对2.0,3.5,4.0,4.5的应用程序中链接此程序集时,XML验证工作正常,但当应用程序以4.6为目标时,它不再有效(DTD处理变得禁止)。 我知道ProhibitDtd在4.0中已被弃用,转而使用DtdProcessing = DtdProcessing.Parse。

我不能使用DtdProcessing.Parse,除非我为我的程序集指定4.0。 我的问题是: 1.如何继续定位3.5并使其在针对4.6及更高版本的应用程序中运行? 2.如果我必须使用4.0来使其工作,那将如何影响使用我的4.0程序集定位2.0的应用程序?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我现在能够继续使用我的程序集来定位3.5,当它链接到一个针对4.6及更高版本的应用程序时,它仍然能够使用DTD验证XML。

我必须将XmlReaderSettings.XmlResolver显式设置为新的XmlUrlResolver()才能使其正常工作。 我想如果不将它设置为新的XmlUrlResolver(),4.6框架会在运行时使用不允许DTD验证的解析器设置它。