【问题标题】:wsdl.exe code generation for xmldsig为 xmldsig 生成 wsdl.exe 代码
【发布时间】:2014-10-06 14:25:08
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    像这样,例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多