提问者:小点点

xmldsig的wsdl. exe代码生成


我有一个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对我生成的代码仍然有效?


共1个答案

匿名用户

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

像这样例如:

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