2016-07-20 6 views
0

이 질문은 전에 질문 할 수도 있지만 이전에 게시 한 거의 모든 솔루션을 시도했습니다. 나는이 아주 새로운 오전 문제가 어디 있는지 알아낼 수 아니다 : JAXB를 사용하는 Unmarshalle xml 파일

다음

내 XML 파일입니다 : 내가

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

:

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

다음은 자바 코드 다음 오류가 발생했습니다.

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에서 생성 된 JAXB 클래스 (또는 XSD와 일치하도록 다른 방법으로 생성 한 클래스)를 따르지 않습니다.

XSD는 http://www.example.org/TaxAddressFileDeliveryConfirmation 네임 스페이스에 요소를 기대하고있다 : {http://www.example.org/TaxAddressFileDeliveryConfirmation}TaxAddressFileDeliveryConfirmation하지만 XML 문서 (네임 스페이스) TaxAddressFileDeliveryConfirmation 요소

당신이 손으로이 XML 파일을 만드는 경우, 당신은 자격을해야 할 수도 적정 보여줍니다

<?xml version="1.0" encoding="UTF-8"?> 
<tns:TaxAddressFileDeliveryConfirmation xmlns:tns="http://www.example.org/TaxAddressFileDeliveryConfirmation"> 
... 

그러나 완전한 대답은 XSD에 따라 다릅니다.

이 질문은 매우 간단하므로 StackOverflow에 이미 많은 비슷한 질문/답변이 나와 있습니다.

관련 문제