2014-09-13 5 views
2

이것은 내 xml로, 자바로 변환해야합니다. 예상치 못한 요소 (URI : "http://www.ae.com/Event/Load"지역 "주문") 나는 JAXBjaxb 네임 스페이스로 언 마샬링

<?xml version="1.0"?> 
<lm:order Id="PLG24M240U" JD="" aCount="2" SUCount="1" xmlns:lm="http://www.ae.com/Event/Load"> 
    <lm:master> 
    <lm:ID>3</lm:ID> 
    <lm:Number>313</lm:Number> 
    <lm:ANumber>323</lm:ANumber>  
    </lm:master> 
    <lm:detail> 
    <lm:ID>3</lm:ID> 
    <lm:Number>3131</lm:Number> 
    <lm:ANumber>3232</lm:ANumber>  
    </lm:detail> 
<lm:detail> 
    <lm:ID>3</lm:ID> 
    <lm:Number>3131</lm:Number> 
    <lm:ANumber>3232</lm:ANumber>  
    </lm:detail> 
    <lm:detail> 
    <lm:ID>3</lm:ID> 
    <lm:Number>313</lm:Number> 
    <lm:ANumber>323</lm:ANumber>  
    </lm:detail> 
</lm:order> 

그리고 다음과 같은 예외 javax.xml.bind.UnmarshalException을 던지는을 사용했다. ,

이 현재 파일을 통해 읽기,

import java.util.ArrayList; 
import java.util.List; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "lm:Order") 
public class OrderPay { 
    @XmlAttribute 
    private String Id; 
    @XmlAttribute 
    private String JD; 
    @XmlAttribute 
    private String aCount; 
    @XmlAttribute 
    private String pCount; 
    /*@XmlElement 
    private Master master; 
    @XmlElement 
    private List<Detail> details = new ArrayList<Detail>();*/ 

} 

당신은 또한 읽기에 좀 도와 주실 래요 내 비 정렬 화 코드

jaxbContext = JAXBContext.newInstance(Order.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
Order order = (Order) jaxbUnmarshaller.unmarshal(file); 
System.out.println(order); 

주문은 POJO 클래스> 주문 : 예상 요소 < {} LM 있습니다 XML 문자열로 읽어야합니다.

+0

@isim을 : 나중에는 오타, 코드에 전혀 컴파일시 에러가. 감사합니다 – Rosh

답변

5

네임 스페이스 특성 xmlns:lm="http://www.ae.com/Event/Load"이 원인 일 수 있습니다. 네임 스페이스 접두사를 지정하기 위해이 같은 package-info.java 파일로 @XmlSchema 주석을 추가 할 수 있습니다

@XmlSchema(
    namespace="http://www.ae.com/Event/Load", 
    elementFormDefault=XmlNsForm.QUALIFIED), 
    xmlns={@XmlNs(prefix="lm", namespaceURI="http://www.ae.com/Event/Load")}) 

package your.package; 
import javax.xml.bind.annotation.*; 
+0

나중에 그 오류가 지금 없습니다. 그러나 응답은 null을 제공합니다. System.out.println (order.getACount); is null – Rosh

+0

StringReader reader = 새 StringReader ("// 전체 xml"); jaxbContext = JAXBContext.newInstance (Order.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 주문 주문 = (주문) jaxbUnmarshaller.unmarshal (reader); System.out.println (order); – Rosh

+0

@Rosh XML에'aCount' 속성이 표시되지 않습니다. 단지'Count' 속성입니다. 그들은 동일하게되어 있습니까? –

관련 문제