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"/>