2012-06-27 2 views
2

JAXB Unmarshaller를 사용하여 Java 객체에 XML 문서를 생성하려고합니다. XML 문서에서 List 클래스의 클래스 Java 객체에 표시 할 요소가 있지만 it 객체에 내용이 있지만 결과 객체 List가 비어있는 경우빈 목록 Unmarshall Java 객체

XML 문서의 요소가 JAXB가 XML 표현을 Class 표현으로 파싱 할 수 없게 만듭니다.

저를 도울 수있는 사람이 있습니까? 왜 그런 일이 있었으며 해결책은 무엇입니까?

답변

0

개체 모델이나 XML 문서를 모르면 비 정렬 작업이 왜 제대로 작동하지 않는지 알기가 어렵습니다. 나는 포장 및 래핑 컬렉션 예를 아래 그건 당신이 사용 사례에서 잘못 될 일을 알아내는 데 도움이 될 수

input.xml/출력

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
    <item>A</item> 
    <item>B</item> 
    <item>C</item> 
    <items> 
     <item>D</item> 
     <item>E</item> 
     <item>F</item> 
    </items> 
</root> 

루트

래핑 된 콜렉션의 경우 래퍼 요소를 지정하기 위해 @XmlElementWrapper 주석을 사용합니다.

package forum11219454; 

import java.util.List; 
import javax.xml.bind.annotation.*; 

@XmlRootElement 
public class Root { 

    private List<String> list; 
    private List<String> nestedList; 

    @XmlElement(name="item") 
    public List<String> getList() { 
     return list; 
    } 

    public void setList(List<String> list) { 
     this.list = list; 
    } 

    @XmlElementWrapper(name="items") 
    @XmlElement(name="item") 
    public List<String> getNestedList() { 
     return nestedList; 
    } 

    public void setNestedList(List<String> nestedList) { 
     this.nestedList = nestedList; 
    } 

} 

추가 정보 데모

package forum11219454; 

import java.io.File; 
import javax.xml.bind.*; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(Root.class); 

     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     File xml = new File("src/forum11219454/input.xml"); 
     Root root = (Root) unmarshaller.unmarshal(xml); 

     Marshaller marshaller = jc.createMarshaller(); 
     marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
     marshaller.marshal(root, System.out); 
    } 

}