我正在尝试从外部服务反序列化XML,因此我无法控制我收到的输出XML。
服务的XML有点奇怪。它没有指定架构,它引用自身。例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE response>
<response>
// blah blah
</response>
我可以使用VS的内置工具为它创建一个XSD文件,但是在反序列化时,是否可以指定本地XSD文件?而不是在DOCTYPE标签中使用不存在的那个?
答案 0 :(得分:1)
您可能需要指定在加载XML文档时不使用XmlResolver。见Ignore DOCTYPE .dtd, but .dtd file must still exist
您可以轻松指定.xsd文件。加载文档时使用XmlReaderSettings对象。请注意,如果您的程序是Web服务,则.xsd可能需要驻留在Windows目录下。有关它的提示,包括64位Windows上的痛苦,请参阅MSI Installer, 64 bit OS, write to \windows\system32\inetsrv folder