为xmldsig生成wsdl.exe代码

时间:2014-10-06 14:25:08

标签: xml web-services xsd wsdl wsdl.exe

我有一个wsdl并希望生成一个使用该wsdl的web服务。因此我使用wsdl.exe生成我可以使用的类。 (> wsdl.exe foobar.wsdl /server

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将此xmldsig“解析”为签名,如命名空间中指向的xsd所述? (http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd) 原始wsdl对我生成的代码是否仍然有效?

1 个答案:

答案 0 :(得分:0)

没有。没有办法。它是一个xml任何元素,命名空间不足以自动生成签名属性。为了存档你必须预先编辑xml。

像这样......:

<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" 
(...)
<xs:element maxOccurs="unbounded" minOccurs="0" ref="dsig:Signature"/>