2014-11-06 14 views
5

Qualcuno può aiutarmi a uscire da questa eccezione.Bloccato con JAXB - Unmarshal XML exception

elemento inaspettato (uri: "http://cpps.xxx.com/splm-service", locale: "PartInquiryService"). elementi sono attesi (nessuno)

Ecco il codice XML e sto usando

File file = new File("PartInquiryService.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(PartInquiryService.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
PartInquiryService partInqService = 
     (PartInquiryService)jaxbUnmarshaller.unmarshal(file); 

Ecco il xml sto usando ..Io sarà ottenere questo XML come una risposta da MQ

<PartInquiryService xmlns="http://cpps.xxx.com/splm-service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <control> 
    <type>inquiryWithServiceWindow</type> 
    <correlationId format="hex">A10488237F3B7734A10488237F3B7734A10488237F3B7734</correlationId> 
    <origin> 
     <system>CPPS-SPLM</system> 
     <id>MP2ZCP5</id> 
     <at timeZone="UTC"> 
     <date format="ISO">2008-12-12</date> 
     <time format="ISO">20:12:48</time> 
     </at> 
    </origin> 
    <destination> 
     <system>SPLM_GUI</system> 
     <id>SPLM_01</id> 
    </destination> 
    </control> 
    <partInquiry> 
    <customerSystemkey>123456789123456</customerSystemkey> 
    <countryCode type="IBM">788</countryCode> 
    <partnumber>0000039M5123</partnumber> 
    <machType>1722</machType> 
    <zipcode>1066 VH</zipcode> 
    </partInquiry> 
    <inquiryResult> 
    <errorMessage>Invalid part number XXXXXXXXXXXX received</errorMessage> 
    <zipcodeUsed>NL 1066</zipcodeUsed> 
    <timeZone>MSK</timeZone> 
    <currency>EUR</currency> 
    <partnumber> 
     <id>0000039M5123</id> 
     <subType>REQ</subType> 
     <description>POWER CORD</description> 
     <subRank>0</subRank> 
     <weigth>10</weigth> 
     <length>12</length> 
     <width>9</width> 
     <height>11</height> 
     <sellingPrice currency="EUR">12.030</sellingPrice> 
     <rohsInd>C</rohsInd> 
    </partnumber> 
    <partnumber> 
     <id>0000040K8888</id> 
     <subType>ALT</subType> 
     <description>POWER CORD</description> 
     <subRank>0</subRank> 
     <weigth>10</weigth> 
     <length>12</length> 
     <width>9</width> 
     <height>11</height> 
     <sellingPrice currency="EUR">12.030</sellingPrice> 
     <rohsInd>D</rohsInd> 
    </partnumber> 
    <partnumber> 
     <id>0000012J1234</id> 
     <subType>SUB</subType> 
     <description>POWER CORD</description> 
     <subRank>-1</subRank> 
     <weigth>10</weigth> 
     <length>12</length> 
     <width>9</width> 
     <height>11</height> 
     <sellingPrice currency="EUR">12.030</sellingPrice> 
     <rohsInd>N</rohsInd> 
    </partnumber> 
    <sourceLocation> 
     <locId>788-5000</locId> 
     <description>CENTRAL BUFFER VENLO</description> 
     <deliveryOption> 
     <serviceWindow>Sameday 2hr</serviceWindow> 
     <logisticCost>88.00</logisticCost> 
     <date format="ISO">2014-08-24</date> 
     <time format="ISO">10:56:00</time> 
     </deliveryOption> 
     <deliveryOption> 
     <serviceWindow>Next day 16:00</serviceWindow> 
     <logisticCost>10.00</logisticCost> 
     <date format="ISO">2014-08-25</date> 
     <time format="ISO">16:00:00</time> 
     </deliveryOption> 
     <partInventory> 
     <id>0000039M5123</id> 
     <availableStock>1</availableStock> 
     </partInventory> 
     <partInventory> 
     <id>0000040K8888</id> 
     <availableStock>5</availableStock> 
     </partInventory> 
    </sourceLocation> 
    <sourceLocation> 
     <locId>821-9200</locId> 
     <description>CRS ST PETERSBURG</description> 
     <deliveryOption> 
     <serviceWindow>Sameday 2hr</serviceWindow> 
     <logisticCost>88.00</logisticCost> 
     <date format="ISO">2014-08-24</date> 
     <time format="ISO">10:56:00</time> 
     </deliveryOption> 
     <deliveryOption> 
     <serviceWindow>Next day 16:00</serviceWindow> 
     <logisticCost>10.00</logisticCost> 
     <date format="ISO">2014-08-25</date> 
     <time format="ISO">16:00:00</time> 
     </deliveryOption> 
     <partInventory> 
     <id>0000039M5123</id> 
     <availableStock>1</availableStock> 
     </partInventory> 
     <partInventory> 
     <id>0000040K8888</id> 
     <availableStock>5</availableStock> 
     </partInventory> 
    </sourceLocation> 
    <sourceLocation> 
     <locId>821-1102</locId> 
     <description>LSH MOSCOW DUTY PAID</description> 
     <deliveryOption> 
     <serviceWindow>Sameday 2hr</serviceWindow> 
     <logisticCost>88.00</logisticCost> 
     <date format="ISO">2014-08-24</date> 
     <time format="ISO">10:56:00</time> 
     </deliveryOption> 
     <deliveryOption> 
     <serviceWindow>Next day 16:00</serviceWindow> 
     <logisticCost>10.00</logisticCost> 
     <date format="ISO">2014-08-25</date> 
     <time format="ISO">16:00:00</time> 
     </deliveryOption> 
     <partInventory> 
     <id>0000039M5123</id> 
     <availableStock>1</availableStock> 
     </partInventory> 
     <partInventory> 
     <id>0000040K8888</id> 
     <availableStock>5</availableStock> 
     </partInventory> 
    </sourceLocation> 
    </inquiryResult> 
</PartInquiryService> 

Ecco la PartInquiryService.java

public class PartInquiryService { 
    private Control control; 
    private PartInquiry partInqury; 
    private InquiryResult inquiryResult; 
    public Control getControl() { 
     return control; 
    } 
    public void setControl(Control control) { 
     this.control = control; 
    } 
    public PartInquiry getPartInqury() { 
     return partInqury; 
    } 
    public void setPartInqury(PartInquiry partInqury) { 
     this.partInqury = partInqury; 
    } 
    public InquiryResult getInquiryResult() { 
     return inquiryResult; 
    } 
    public void setInquiryResult(InquiryResult inquiryResult) { 
     this.inquiryResult = inquiryResult; 
    } 


} 
+0

Puoi mostrarci PartInquiryService.class? – Xstian

+0

Ciao Xstian, grazie per la tua risposta, ho aggiunto lo snippet di codice per PartInquiryService? Ho creato altri file di associazione .java che sono usati in unmarshalling xml i.e Control.java, PartInquiry.java ecc. – chandiprasad

risposta

5

Aggiungi il tuo classe PartInquiryService.java

@XmlRootElement(name = "PartInquiryService" ,namespace="http://cpps.xxx.com/splm-service") 
public class PartInquiryService { 

nello stesso pacchetto di mettere questa classe (package-info.java)

@javax.xml.bind.annotation.XmlSchema(namespace = "http://cpps.xxx.com/splm-service", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 
package your.package; 

Nota: lo spazio dei nomi all'interno @XmlRootElement c'è necessario in questo caso, ma ho usato per rafforzare questa informazione.

+0

Fantastico che funziona! Grazie . – chandiprasad

+0

È stato un piacere aiutarti :) – Xstian

+0

Ciao Xstian, speriamo di poter usare anche il comando seguente per generare tutte le classi JAXB, eseguendo questo comando ... $ xjc xx-xx-xx-xxx.xsd -p -d C:/? – chandiprasad

Problemi correlati