wsdl.exe генерация кода для xmldsig

У меня есть WSDL и хочу создать веб-сервис, который использует этот WSDL. поэтому я использую 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 ответ

Решение

Нет, нет пути. это xml любой элемент и пространство имен недостаточно для автоматической генерации свойства подписи. для того, чтобы заархивировать это, вы должны отредактировать предварительный XML.

как это например:

<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" 
(...)
<xs:element maxOccurs="unbounded" minOccurs="0" ref="dsig:Signature"/>
Другие вопросы по тегам