2014-11-06 15 views
5

Có thể bất kỳ ai giúp tôi thoát khỏi ngoại lệ này hay không.Bị mắc kẹt với JAXB - ngoại lệ XML bất thường

yếu tố không mong muốn (uri: "http://cpps.xxx.com/splm-service", địa phương: "PartInquiryService"). yếu tố kỳ vọng là (none)

Đây là mã và xml tôi đang sử dụng

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

Dưới đây là xml đang sử dụng nó ..Tôi sẽ nhận được xml này như một phản ứng từ 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> 

đây là 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

Bạn có thể hiển thị cho chúng tôi PartInquiryService.class không? – Xstian

+0

Hi Xstian, cảm ơn bạn đã trả lời, tôi đã thêm đoạn mã cho PartInquiryService? Tôi đã tạo các tệp ràng buộc .java khác được sử dụng trong xml unmarshalling tức là Control.java, PartInquiry.java, v.v. – chandiprasad

Trả lời

5

Thêm vào lớp học của bạn PartInquiryService.java

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

trong cùng một gói đặt lớp này (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; 

Lưu ý: không gian tên trong @XmlRootElement là không cần thiết trong trường hợp này nhưng tôi sử dụng để củng cố này thông tin.

+0

Làm mát! cảm ơn . – chandiprasad

+0

Rất vui được giúp bạn :) – Xstian

+0

Xin chào Xstian, hy vọng chúng tôi thậm chí có thể sử dụng lệnh dưới đây để tạo tất cả các lớp JAXB, bằng cách chạy lệnh này ... $ xjc xx-xx-xx-xxx.xsd -p -d C:/? – chandiprasad

Các vấn đề liên quan