Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stuck up with JAXB - unmarshal XML exception

Tags:

java

xml

jaxb

Can any one help me to get out of this exception.

unexpected element (uri:"http://cpps.xxx.com/splm-service", local:"PartInquiryService"). Expected elements are (none)

Here is the code and xml i am using

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

Here is the xml am using it ..I will be getting this xml as a response from 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>

Here is the 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;
    }


}
like image 583
chandiprasad Avatar asked Nov 06 '14 07:11

chandiprasad


1 Answers

Add on your class PartInquiryService.java

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

in the same package put this class (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;

Note: the namespace within @XmlRootElement is no necessary in this case but I used to reinforce this information.

like image 200
Xstian Avatar answered Oct 19 '22 23:10

Xstian