【发布时间】:2011-08-06 13:17:06
【问题描述】:
Visual Studios 2005,.NET 2.0
我正在开发一种消息传递服务,该服务基于我无法修改的第 3 方模式文件发送和接收 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"/>
进一步在文件中它引用了该架构中定义的 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?或者有没有人知道更好的方法来整体设置它,而不是使用基于提供的模式的数据集?
【问题讨论】:
标签: c# xsd dataset digital-signature msdatasetgenerator