我正在尝试从外部服务反序列化 XML,因此我无法控制收到的输出 XML。
该服务的 XML 有点奇怪。它没有指定模式,它引用自己。例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE response>
<response>
// blah blah
</response>
我可以使用 VS 的内置工具为其创建 XSD 文件,但是在反序列化时,是否可以指定本地 XSD 文件?而不是在 DOCTYPE 标签中使用不存在的标签?
我正在尝试从外部服务反序列化 XML,因此我无法控制收到的输出 XML。
该服务的 XML 有点奇怪。它没有指定模式,它引用自己。例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE response>
<response>
// blah blah
</response>
我可以使用 VS 的内置工具为其创建 XSD 文件,但是在反序列化时,是否可以指定本地 XSD 文件?而不是在 DOCTYPE 标签中使用不存在的标签?
您可能需要指定在加载 XML 文档时不使用 XmlResolver。请参阅忽略 DOCTYPE .dtd,但 .dtd 文件必须仍然存在
您可以轻松指定 .xsd 文件。加载文档时使用 XmlReaderSettings 对象。请注意,如果您的程序是 Web 服务,您的 .xsd 可能需要驻留在 Windows 目录下。有关它的提示,包括在 64 位 Windows 上的痛苦,请参阅MSI 安装程序,64 位操作系统,写入 \windows\system32\inetsrv 文件夹