2014-11-06 12 views
5

Bu istisnayı ortadan kaldırmak için herhangi biri bana yardımcı olabilir.JAXB ile sıkışmış - unmarshal XML istisnası

beklenmedik eleman (uri: "http://cpps.xxx.com/splm-service", yerel: "PartInquiryService"). Beklenen elementler (yok) İşte

xml ..Ben MQ

bir yanıt olarak bu xml elde edilecektir onu kullanıyorum i Burada
File file = new File("PartInquiryService.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(PartInquiryService.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
PartInquiryService partInqService = 
     (PartInquiryService)jaxbUnmarshaller.unmarshal(file); 

kullanıyorum kod ve xml are
<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> 

İşte 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

Bize PartInquiryService.class'ı gösterebilir misiniz? – Xstian

+0

Merhaba Xstian, cevabınız için teşekkürler, PartInquiryService için kod snippet ekledim? Ben xml unmarshalling i.e Control.java, PartInquiry.java vb kullanılan diğer .java bağlama dosyaları oluşturduk .. – chandiprasad

cevap

5

olduğunu Bu sınıf (package-info.java)

koymak aynı pakette sınıfının PartInquiryService.java

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

üzerine ekleyin

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

Not: @XmlRootElement içinde ad bu durumda hiçbir gereklidir ama bu güçlendirmek için kullanılır bilgi.

+0

Bu işe yaramaz! Teşekkürler . – chandiprasad

+0

Size yardımcı olacak bir zevkti :) – Xstian

+0

Merhaba Xstian, bu komutu çalıştırarak tüm JAXB sınıflarını oluşturmak için aşağıdaki komutu bile kullanabileceğimizi umuyoruz ... $ xjc xx-xx-xx-xxx.xsd -p -d C:/? – chandiprasad