我创建了简单的Web服务在C#:如何编译使用DataSet(xs:schema)的模式?
public void AddData(DataSet ds)
生成的模式(WSDL)看起来是这样的:
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema">
...
<s:element ref="s:schema" />
...
</s:schema>
注意的架构不包含任何进口/ include元素。
我试图加载此模式为ac#System.Xml.XmlSchema并将其添加到System.Xml.XmlSchemaSet:
var set = new XmlSchemaSet();
var fs = new FileStream(@"c:\temp\schema.xsd", FileMode.Open);
var s = XmlSchema.Read(fs, null);
set.Add(s);
set.Compile();
最后一行抛出此异常:
The 'http://www.w3.org/2001/XMLSchema:schema' element is not declared.
它是有道理的:.Net生成的模式使用在未导入的模式中声明的“s:schema”类型。
- 为什么.NET创建一个非有效的架构?
- 如何编译架构呢?我所做的是在http://www.w3.org/2001/XMLSchema下载架构并将其添加到XmlSchemaSet中。由于该联机模式包含DTD定义,因此这不起作用。我不得不手动删除它,现在所有的作品。这是有道理的,还是我错过了什么?
否,则表示该服务将返回一个'DataSet'。这不是一个好主意。预计Java客户端如何处理DataSet。通常,不要在Web服务的合约中使用任何.NET特定的类型。 – 2015-01-10 01:29:33