2017-08-31 6 views
1

(大)子表の要素のアンマーシャリングに問題があります。ここでは、入力データの構造です:JAXB(グランド)子要素のデータが入力されない

<searchResultDocuments> 
    <pageNumber>1</pageNumber> 
    <pageSize>1</pageSize> 
    <results> 
     <contentType>text/html</contentType> 
     <fileName>theFile.txt</fileName> 
     <mainDoc> 
      <dates> 
       <date> 
        <match>20170822</match> 
        <startOffset>4324</startOffset> 
       </date> 
       ... 
      </dates> 
      <entities> 
       <entity> 
        <startOffsets>4324 5634</startOffsets> 
        <entityType>featuretype</entityType> 
       <entity> 
       ... 
      </entities> 
     </mainDoc> 
    </results> 
    ... 
</searchResultDocuments> 

データをキャプチャするためのJavaクラスは、次のようになります。

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name="searchResultDocuments") 
public class SearchReturnData{ 
    @XmlElement 
    private int pageNumber; 
    @XmlElement 
    private int pageSize; 
    @XmlElement(name="results") 
    private List<ResultData> resultData; 
//(no setters, getters only in all classes, although I tried it both ways) 
}// end of SearchResultData 

@XmlAccessorType(XmlAccessType.FIELD) 
public class ResultData{ 
    @XmlElement 
    private String contentType; 
    @XmlElement 
    private String fileName; 
    @XmlElement(name="mainDoc") 
    private MainDoc mainDoc; 
} // end of ResultData 

@XmlAccessorType(XmlAccessType.FIELD) 
public class MainDoc{ 
    @XmlElement(name="dates") 
    private List<DateData> dates; 
    @XmlElement(name="entities") 
    private List<EntityData> entities; 
}// end of MainDoc 

@XmlType(name="date") 
public class DateData{ 
    @XmlElement(name="match") 
    private String match; 
    @XmlElement(name="startOffset") 
    private String startOffset; 
}// end of DateData 

@XmlType(name="entity") 
public class EntityData{ 
    @XmlElement(name="startOffsets") 
    private String startOffsets; 
    @XmlElement(name="entityType") 
    private String entityType; 
}// end of EntityData 

私はこの構造に入ってくるデータを非整列化するとき、私は、行の適切な数を取得しますDataDataとEntityDataのいずれかの要素はデータを持ちません。私は持っているとセッターを持っていないことを試みたが、それは違いはありません。

答えて

1

MainDocクラスでは、リストに要素ラッパーを使用する必要があります。

@XmlElementWrapper(name="dates") 
@XmlElement(name="date") 
public List<DateData> dates; 

@XmlElementWrapper(name="entities") 
@XmlElement(name="entity") 
public List<EntityData> entities; 

また、あなたのXMLが<entity>アイテムを閉じていない、それは<entity>の一つと</entity>代わりの<entity>の二つのうちの一つを持っている必要があります。

+1

ありがとうございます。私はすぐにそれを試してみます。実際のタグは適切に閉じます。私は脂肪指であり、同じことを言いたいと思った。データは他の場所から来ています。私はただそれを消費しようとしています。 –

関連する問題