Reputation: 1
This question might be asked before but I have tried almost all solutions posted before. I am quite new to this and I am not able to figure out where the issue is:
Following is my XML file:
<?xml version="1.0" encoding="UTF-8"?>
<TaxAddressFileDeliveryConfirmation>
<ReturnInfo>
<ErrorCode>FAILURE</ErrorCode>
<ErrorMessage>abc.
</ErrorMessage>
</ReturnInfo>
<TaxAddressFileDeliveryNotification>
<FileNameInput>abc
</FileNameInput>
<FileNameOutput>abc
</FileNameOutput>
<MessageCount>20000</MessageCount>
<ReplyMessageSubject>abc
</ReplyMessageSubject>
<ProcessingOption NAME="TAR">Y</ProcessingOption>
</TaxAddressFileDeliveryNotification>
</TaxAddressFileDeliveryConfirmation>
Following is Java code:
public class CheckSampleXMLUnmarshall {
public static void main(String[] args) {
try {
File file = new File(
"Sample.xml");
JAXBContext jaxbContext = JAXBContext
.newInstance(TaxAddressFileDeliveryConfirmation.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Object resposeObj = JAXBIntrospector.getValue(jaxbUnmarshaller
.unmarshal(file));
System.out.println(resposeObj);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
I am getting the following error:
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"TaxAddressFileDeliveryConfirmation"). Expected elements are <{http://www.example.org/TaxAddressFileDeliveryNotification}TaxAddressDeliveryNotification>,<{http://www.example.org/TaxAddressFileDeliveryConfirmation}TaxAddressFileDeliveryConfirmation>
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:647)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:243)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:238)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:105)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1048)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:483)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:465)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:135)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3065)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:881)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:203)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:175)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:162)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:171)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:189)
at CheckSampleXMLUnmarshall.main(CheckSampleXMLUnmarshall.java:20)
What exactly do I need to check?
Upvotes: 0
Views: 80
Reputation: 5310
Your XML doesn't conform to your schema (XSD), or at least it doesn't conform to the JAXB classes that were generated from the XSD (or that you created in some other way to match the XSD).
The XSD is expecting an element in the http://www.example.org/TaxAddressFileDeliveryConfirmation
namespace: {http://www.example.org/TaxAddressFileDeliveryConfirmation}TaxAddressFileDeliveryConfirmation
but your XML document shows an unqualified (no namespace) TaxAddressFileDeliveryConfirmation
element
If you're creating this XML file by hand, you might need to qualify the top-level elements like this:
<?xml version="1.0" encoding="UTF-8"?>
<tns:TaxAddressFileDeliveryConfirmation xmlns:tns="http://www.example.org/TaxAddressFileDeliveryConfirmation">
...
But the complete answer would depend on your XSD.
This is a pretty straightforward question, so you should find a lot of similar questions/answers already existing on StackOverflow.
Upvotes: 1