我有一个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对我生成的代码是否仍然有效?
答案 0 :(得分:0)
没有。没有办法。它是一个xml任何元素,命名空间不足以自动生成签名属性。为了存档你必须预先编辑xml。
像这样......:<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
(...)
<xs:element maxOccurs="unbounded" minOccurs="0" ref="dsig:Signature"/>