IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[WSDL][Axis] Récupération de valeur dans des classes java


Sujet :

XML/XSL et SOAP

  1. #1
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut [WSDL][Axis] Récupération de valeur dans des classes java
    Bonjour,

    J'ai un problème lors de la récupération de valeurs d'un message SOAP.

    Je suis sous Eclipse et j'utilise un pluggin qui me génère à partir d'un WSDL des classes java.

    Lorsque je fait appel aux Web Service (envoi d'un message SOAP)
    le serveur me retourne un message SOAP contenant la réponse et cela met le tout directement dans mes classes java générées.

    Cela se passe très bien excepté pour un noeud :
    voici le xsd qui décrit ce noeud
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xs:element name="D" maxOccurs="unbounded"> 
         <xs:complexType mixed="true"> 
              <xs:attribute name="n" type="xs:integer"/> 
              <xs:simpleType> 
              </xs:simpleType> 
         </xs:complexType> 
    </xs:element>
    et voila un exemple du noeud dans mon message SOAP de retour
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <ROW id="916"> 
                 <D n="10015">200RDCBA</D> 
                  <D n="10016">200RDC   BA</D> 
      </ROW>

    Le problème c'est que je n'arrive jamais à récupérer la valeur dans le noeud :
    200RDCBA

    Ma structure java me permet juste de ramener l'id "10015".

    Le problème semble venir de ma déclaration dans mon xsd ce qui fait qu'à la génération il m'oubli certaines classes.

    J'éspère n'avoir pas trop été imprécis n'hésitez pas si vous voulez d'autres renseignements car là je ne comprend pas ...

    Merci

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    la définition de ton élément D me paraît curieuse... Je verrais plutôt cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       <xs:element name="D" maxOccurs="unbounded">  
          <xs:complexType> 
             <xs:simpleContent> 
                <xs:extension base="xs:string"> 
                   <xs:attribute name="n" use="required" type="xs:integer"/> 
                </xs:extension> 
             </xs:simpleContent> 
          </xs:complexType> 
       </xs:element>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut
    Salut,

    Je te remercie de t'être penché sur mon problème cela fait plusieurs jours que je suis bloqué.

    J'ai remplacé mon xsd par ton code et j'ai toujours le même problème.
    Je n'arrive pas à récuperer la valeur de ce noeud.
    j'ai regarder la classe généré pour ce noeud et je trouve comme attribut uniquement l'id et pas la value est ce normal ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
      public class _DATA_ROW_D  implements java.io.Serializable {
        private java.math.BigInteger n;  // attribute
     
        public _DATA_ROW_D() {
        }
     
        public java.math.BigInteger getN() {
            return n;
        }
     
        public void setN(java.math.BigInteger n) {
            this.n = n;
        }
     
        private java.lang.Object __equalsCalc = null;
        public synchronized boolean equals(java.lang.Object obj) {
            if (!(obj instanceof _DATA_ROW_D)) return false;
            _DATA_ROW_D other = (_DATA_ROW_D) obj;
            if (obj == null) return false;
            if (this == obj) return true;
            if (__equalsCalc != null) {
                return (__equalsCalc == obj);
            }
            __equalsCalc = obj;
            boolean _equals;
            _equals = true && 
                ((this.n==null && other.getN()==null) || 
                 (this.n!=null &&
                  this.n.equals(other.getN())));
            __equalsCalc = null;
            return _equals;
        }
     
        private boolean __hashCodeCalc = false;
        public synchronized int hashCode() {
            if (__hashCodeCalc) {
                return 0;
            }
            __hashCodeCalc = true;
            int _hashCode = 1;
            if (getN() != null) {
                _hashCode += getN().hashCode();
            }
            __hashCodeCalc = false;
            return _hashCode;
        }
     
        // Type metadata
        private static org.apache.axis.description.TypeDesc typeDesc =
            new org.apache.axis.description.TypeDesc(_DATA_ROW_D.class);
     
        static {
            typeDesc.setXmlType(new javax.xml.namespace.QName("http://schemas.datastream.net/MP_functions/MP0118_GetGridHeaderData_001_Result", ">DATA>ROW>D"));
            org.apache.axis.description.AttributeDesc attrField = new org.apache.axis.description.AttributeDesc();
            attrField.setFieldName("n");
            attrField.setXmlName(new javax.xml.namespace.QName("", "n"));
            attrField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "integer"));
            typeDesc.addFieldDesc(attrField);
        }
     
        /**
         * Return type metadata object
         */
        public static org.apache.axis.description.TypeDesc getTypeDesc() {
            return typeDesc;
        }
     
        /**
         * Get Custom Serializer
         */
        public static org.apache.axis.encoding.Serializer getSerializer(
               java.lang.String mechType, 
               java.lang.Class _javaType,  
               javax.xml.namespace.QName _xmlType) {
            return 
              new  org.apache.axis.encoding.ser.BeanSerializer(
                _javaType, _xmlType, typeDesc);
        }
     
        /**
         * Get Custom Deserializer
         */
        public static org.apache.axis.encoding.Deserializer getDeserializer(
               java.lang.String mechType, 
               java.lang.Class _javaType,  
               javax.xml.namespace.QName _xmlType) {
            return 
              new  org.apache.axis.encoding.ser.BeanDeserializer(
                _javaType, _xmlType, typeDesc);
        }
     
    }
    D'autre part lors de la géneration à partir de mon WSDL une classe est en erreur car deux attributs sont identiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /**
     * PGPDataType.java
     *
     * This file was auto-generated from WSDL
     * by the Apache Axis WSDL2Java emitter.
     */
     
    package org.w3.www._2000._09.xmldsig;
     
    public class PGPDataType  implements java.io.Serializable {
        private byte[] PGPKeyID;
        private byte[] PGPKeyPacket;
        private org.apache.axis.message.MessageElement [] _any;
        private byte[] PGPKeyPacket;
        private org.apache.axis.message.MessageElement [] _any;
    Merci pour toute orientation pouvant m'aider à me sortir de ce problème je désespere ...

  4. #4
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut
    voici le xsd general

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    	<xs:element name="DATA">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:choice>
    					<xs:element name="ROW" maxOccurs="unbounded">
    						<xs:complexType>
    							<xs:sequence>
    								 <xs:element name="D" maxOccurs="unbounded">  
         								 <xs:complexType> 
            								 <xs:simpleContent> 
              								 	 <xs:extension base="xs:string"> 
                  									 <xs:attribute name="n" use="required" type="xs:integer"/> 
                								 </xs:extension> 
             								  </xs:simpleContent> 
          								</xs:complexType> 
       								</xs:element>
    							</xs:sequence>
    							<xs:attribute name="id" type="xs:integer"/>
    						</xs:complexType>
    					</xs:element>
    					<xs:element name="R" maxOccurs="unbounded">
    						<xs:complexType>
    							<xs:sequence>
    								<xs:element name="D" maxOccurs="unbounded"/>
    							</xs:sequence>
    						</xs:complexType>
    					</xs:element>
    				</xs:choice>
    			</xs:sequence>
    			<xs:attribute name="targetpromptseq" type="xs:integer"/>
    		</xs:complexType>
    	</xs:element>
    	<xs:element name="GRID">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element ref="METADATA" minOccurs="0"/>
    				<xs:element ref="DATA" minOccurs="0"/>
    				<xs:element ref="FIELDS" minOccurs="0"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    	<xs:element name="GRID_GRIDRESULT">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element ref="DATASPY" minOccurs="0"/>
    				<xs:element ref="dst:TOOLBAR" minOccurs="0"/>
    				<xs:element ref="GRID" minOccurs="0"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    	<xs:simpleType name="FIELD_TYPE">
    		<xs:restriction base="xs:string">
    			<xs:enumeration value="VARCHAR"/>
    			<xs:enumeration value="MIXVARCHAR"/>
    			<xs:enumeration value="NUMBER"/>
    			<xs:enumeration value="CONTAINS"/>
    			<xs:enumeration value="LONG"/>
    			<xs:enumeration value="CURRENCY"/>
    			<xs:enumeration value="DECIMAL"/>
    			<xs:enumeration value="DURATION"/>
    			<xs:enumeration value="DATE"/>
    			<xs:enumeration value="DATETIME"/>
    		</xs:restriction>
    	</xs:simpleType>
    	<xs:simpleType name="GRID_TYPE_type">
    		<xs:restriction base="xs:string">
    			<xs:enumeration value="LIST"/>
    			<xs:enumeration value="LOV"/>
    		</xs:restriction>
    	</xs:simpleType>
    </xs:schema>

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  2. récupération attribut dans des classes différentes
    Par l'unique dans le forum Débuter
    Réponses: 4
    Dernier message: 14/10/2010, 10h06
  3. Réponses: 4
    Dernier message: 08/09/2010, 08h32
  4. Réponses: 9
    Dernier message: 26/11/2007, 09h50
  5. Récupération de valeurs dans logiciel de bourse
    Par david0280 dans le forum MFC
    Réponses: 25
    Dernier message: 28/03/2005, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo