C#从包含数字签名的xsd创建数据集

C#从包含数字签名的xsd创建数据集,c#,xsd,dataset,digital-signature,msdatasetgenerator,C#,Xsd,Dataset,Digital Signature,Msdatasetgenerator,Visual Studio 2005,.NET 2.0 我正在开发一个消息传递服务,它根据我无法修改的第三方模式文件发送和接收xml消息。(我已经验证了模式的有效性,并使用Altova的XMLSpy生成了一条示例xml消息。)我发现处理此需求的最佳解决方案是基于模式创建一个数据集,然后使用dataset.ReadXml()填充数据集。然后,在创建消息时应该能够使用DataSet.WriteXml() 过去,当我使用.xsd文件构建数据集时,我使用了MSDataSetGenerator自定义工具。

Visual Studio 2005,.NET 2.0

我正在开发一个消息传递服务,它根据我无法修改的第三方模式文件发送和接收xml消息。(我已经验证了模式的有效性,并使用Altova的XMLSpy生成了一条示例xml消息。)我发现处理此需求的最佳解决方案是基于模式创建一个数据集,然后使用dataset.ReadXml()填充数据集。然后,在创建消息时应该能够使用DataSet.WriteXml()

过去,当我使用.xsd文件构建数据集时,我使用了MSDataSetGenerator自定义工具。但是,在通过MSDataSetGenerator运行模式文件时,出现以下错误:

自定义工具错误:未能生成 代码。无法转换输入xml文件 将内容添加到数据集。这个 'http://www.w3.org/2000/09/xmldsig#:KeyInfo' 元素未声明

下面是与模式文件中的数字签名/KeyInfo/Signature相关的行

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
但这也引发了关于未声明KeyInfo的相同错误


是否有其他方法来创建缺少的数据集,或者需要设置一个选项才能使用MSDataSetGenerator?或者有人知道一个更好的方法来设置这个整体,而不是使用基于提供的模式的数据集吗?

来自W3C的原始XML签名模式文件在顶部包含一个DTD头,我想这是为了与旧的XML解析器兼容。显然.Net架构阅读器不喜欢这样。最简单的解决方案是注释掉

<!DOCTYPE ...

我很感谢您的回复,但这是4年前提出的问题:)。出现问题的架构文件顶部没有DOCTYPE标记。最后,我只是修改了模式文件,并告诉第三方我正在这么做,因为他们无法给我其他选择。我意识到,我只是想帮助其他人(比如我),因为这是一个多年来一直没有答案的问题。。。
DataSet ds = new DataSet();
ds.ReadXmlSchema("schema.xsd");
<!DOCTYPE ...