反序列化时可以指定XML模式/ xsd吗?

时间:2011-01-18 21:02:19

标签: c# xml xml-deserialization

我正在尝试从外部服务反序列化XML,因此我无法控制我收到的输出XML。

服务的XML有点奇怪。它没有指定架构,它引用自身。例如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE response>
<response>
 // blah blah
</response>

我可以使用VS的内置工具为它创建一个XSD文件,但是在反序列化时,是否可以指定本地XSD文件?而不是在DOCTYPE标签中使用不存在的那个?

1 个答案:

答案 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