2016-07-20 11 views
0

この質問は以前に聞かれるかもしれませんが、以前に投稿されたほとんどすべてのソリューションを試しました。私はこれに非常に新しいですし、私は、問題がどこにあるか把握することはできませんよ。JAXBを使用したUnmarshalle xmlファイル

以下は、私のXMLファイルです:後

<?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> 

は、Javaコードです:

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(); 
     } 
    } 
} 

私は次のエラーが表示されます:

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) 

正確に何を確認する必要がありますか?

+0

xmlがスキーマに準拠していないようです。特に、名前空間がオフになっているように見えます。あなたはスキーマを持っていますか? – bradimus

答えて

1

XMLがスキーマ(XSD)に準拠していないか、少なくともXSDから生成された(または他の方法でXSDに一致するように作成された)JAXBクラスに準拠していません。

XSDはhttp://www.example.org/TaxAddressFileDeliveryConfirmation名前空間内の要素を期待している:{http://www.example.org/TaxAddressFileDeliveryConfirmation}TaxAddressFileDeliveryConfirmationが、あなたのXML文書は(なし名前空間)TaxAddressFileDeliveryConfirmation要素

あなたが手で、このXMLファイルを作成している場合、あなたは資格が必要になることがあります資格のない示し

しかし、完全な答えはXSDによって異なります。

これはかなり簡単な質問ですので、StackOverflowに既に存在する多くの同様の質問/回答があるはずです。

関連する問題