2017-11-08 3 views
1

데이터를 올바르게 처리 할 수 ​​있도록 기존 XML 파일을 언 마샬하려고하지만 XML 구조가 이상하게 보입니다. 아래는 내가 만든 객체와 함께 xml의 샘플입니다.XML을 역 마샬링

<?xml version="1.0" encoding="UTF-8"?> 
<Record> 
<identifier>11</identifier> 
<TotalRecords>266</TotalRecords> 
<ListOfSections> 
    <SECTION>AA1001</SECTION> 
    <ListOfStudents> 
     <SequenceNumber>11</SequenceNumber> 
     <RecordCount>1</RecordCount> 
     <StudentId>201614354</StudentId> 

    </ListOfStudents> 

    <SECTION>AA1002</SECTION> 
    <ListOfStudents> 
     <SequenceNumber>15</SequenceNumber> 
     <RecordCount>1</RecordCount> 
     <StudentId>201614356</StudentId> 

     <SequenceNumber>16</SequenceNumber> 
     <RecordCount>2</RecordCount> 
     <StudentId>201614355</StudentId> 
    </ListOfStudents> 
</ListOfSections> 
</Record> 

다음은 내 Java 클래스입니다. 방금 가독성을 위해 변수를 제거했습니다.

@XmlRootElement 
public class Record { 

    @XmlElement(name = "TotalRecords") 
    public Integer getTotalNoOfRecords() { 
     return totalNoOfRecords; 
    } 

    @XmlElement(name = "ListOfSections") 
    public List<Section> getSectionList() { 
     return sectionList; 
    } 
} 


@XmlRootElement 
public class Section { 

    @XmlElement(name = "SECTION") 
    public String getSection() { 
     return section; 
    } 

    @XmlElement(name = "ListOfStudents") 
    public List<Student> getStudentList() { 
     return studentList; 
    } 
} 


@XmlRootElement 
public class Student { 

    @XmlElement(name = "SequenceNumber") 
    public Integer getSequenceNumber() { 
     return sequenceNumber; 
    } 

    @XmlElement(name = "RecordCount") 
    public Integer getRecordCount() { 
     return recordCount; 
    } 

    @XmlElement(name = "StudentId") 
    public Integer getStudentId() { 
     return studentId; 
    } 
} 

ListOfSections 태그 내의 모든 레코드를 가져 오려고했지만 AA1002 인 마지막 섹션 만 가져옵니다.

ListOfStudents 위해 나는 단지 내 경우에는 첫 번째 레코드를 얻고 난 단지 시퀀스 번호와 함께 기록을 받고 있어요 (15)이 단순화 된 코드가 XML을 작동

<SequenceNumber>12</SequenceNumber> 
<RecordCount>2</RecordCount> 
<StudentId>201614355</StudentId> 

답변

1

, 그것은 당신에게 힌트 곳을 주어야한다 문제를 찾기 위해 여기

class Record { 
    @XmlElementWrapper(name="ListOfSections") 
    @XmlElement(name="SECTION") 
    List<String> listOfSections; 
} 

실행하는 방법 :

Record r = JAXB.unmarshal(new File("1.xml"), Record.class); 
    System.out.println(r.listOfSections); 

결과 :

[AA1001, AA1002]