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

| Visual Studios 2005,.NET 2.0 我正在开发一个消息传递服务,该服务基于我无法修改的第三方模式文件发送和接收xml消息。 (我已经验证了该模式是有效的,并使用Altova的XMLSpy生成了示例xml消息。)我发现满足此要求的最佳解决方案是基于该模式创建一个数据集,然后填充该数据集使用DataSet.ReadXml()。然后,在创建消息时应该可以使用DataSet.WriteXml()。 过去,我已经根据.xsd文件构建了DataSets,然后使用了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\"/>
在文件中,它进一步引用了该模式中定义的2个对象:
<xs:element ref=\"ds:Signature\" minOccurs=\"0\"/>
<xs:element ref=\"ds:KeyInfo\" minOccurs=\"0\"/>
我还尝试通过执行以下操作加载架构:
DataSet ds = new DataSet();
ds.ReadXmlSchema(\"schema.xsd\");
但是,这也引发了有关未声明KeyInfo的相同错误。 有没有其他方法可以创建我丢失的数据集,或者需要设置一个选项才能使用MSDataSetGenerator?还是有人知道更好的方法来进行整体设置,而不是使用基于提供的模式的数据集?     
已邀请:
来自W3C的原始XML签名架构文件在顶部包含一个DTD标头,我想使其与旧的XML解析器兼容。显然,.Net模式阅读器不喜欢那样。最简单的解决方案是从中注释掉八行
<!DOCTYPE ...
]>
。     

要回复问题请先登录注册