我有一个wsdl并想生成一个使用该wsdl的网络服务。因此我使用wsdl. exe来生成我可以使用的类。(
wsdl文件包含这样的一行
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2000/09/xmldsig#"/>
wsdl. exe将其翻译为
private System.Xml.XmlElement[] anyField;
/// <remarks/>
[System.Xml.Serialization.XmlAnyElementAttribute()]
public System.Xml.XmlElement[] Any {
get {
return this.anyField;
}
set {
this.anyField = value;
}
}
相反,我希望签名被“解析”以生成这样的代码:
private SignatureType[] signatureField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute ("Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
public SignatureType[] Signature
{
get
{
return this.signatureField;
}
set
{
this.signatureField = value;
}
}
有办法实现吗?我可以告诉wsdl. exe按照命名空间中指向的xsd中的描述将此xmldsig解析为签名吗?(http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd)是否有原始wsdl对我生成的代码仍然有效?
不,不,没有办法。它是一个xml any元素,命名空间不足以自动生成签名属性。为了存档,您必须预先编辑xml。
像这样例如:
<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
(...)
<xs:element maxOccurs="unbounded" minOccurs="0" ref="dsig:Signature"/>