无法使用jaxb解组子对象

时间:2017-09-28 07:49:52

标签: java xml jaxb

我是一个非常大的XML字符串。我在这里只发布了XML对象的一部分。我试图将此XML转换为Java对象。我的第一个问题是,我是否需要创建总XML标记值的Java对象,还是可以创建仅选定内部XML对象的Java对象?请找到我的XML字符串。

<DATAPACKET REQUEST-ID = "2">
<HEADER>
    <RESPONSE-TYPE CODE="1" DESCRIPTION="Response DataPacket"/>
    <SEARCH-RESULT-LIST>
        <SEARCH-RESULT-ITEM>
            <NAME MATCHED="TRUE"/>              
        </SEARCH-RESULT-ITEM>
    </SEARCH-RESULT-LIST>
</HEADER>
<BODY>
    <CONS_SCORE>
        <SCORE>0</SCORE>
        <REASON1>
            <HEADER></HEADER>
            <DESCRIPTION></DESCRIPTION>
        </REASON1>
        <REASON2>
            <HEADER></HEADER>
            <DESCRIPTION></DESCRIPTION>
        </REASON2>
        <REASON3>
            <HEADER></HEADER>
            <DESCRIPTION></DESCRIPTION>
        </REASON3>
        <REASON4>
            <HEADER></HEADER>
            <DESCRIPTION></DESCRIPTION>
        </REASON4>
    </CONS_SCORE>
    <CONSUMER_PROFILE2>
        <CONSUMER_DETAILS2>
            <RUID>1234</RUID>
            <NAME>ABC</NAME>
            <DATE_OF_BIRTH>1980-03-03T00:00:00+03:00</DATE_OF_BIRTH>
            <GENDER>001</GENDER>                
        </CONSUMER_DETAILS2>
        <ID_DETAILS2>
            <SLNO>1</SLNO>
            <SOURCE_ID>001</SOURCE_ID>
            <ID_VALUE>2806</ID_VALUE>
            <EXP_DATE>2018-07-13T00:00:00+03:00</EXP_DATE>              
        </ID_DETAILS2>
    </CONSUMER_PROFILE2>
    </BODY>
</DATAPACKET>

在上面的对象中,我想只获取CONSUMER_PROFILE2对象。这是我的Dto课程

@XmlRootElement(name = "CONSUMER_PROFILE2")
public class ConsumerProfileDto {

private ConsumerDetailsDto CONSUMER_DETAILS2;

private IdDetailsDto ID_DETAILS2;

public ConsumerDetailsDto getCONSUMER_DETAILS2() {
    return CONSUMER_DETAILS2;
}

public void setCONSUMER_DETAILS2(ConsumerDetailsDto cONSUMER_DETAILS2) {
    CONSUMER_DETAILS2 = cONSUMER_DETAILS2;
}

public IdDetailsDto getID_DETAILS2() {
    return ID_DETAILS2;
}

public void setID_DETAILS2(IdDetailsDto iD_DETAILS2) {
    ID_DETAILS2 = iD_DETAILS2;
}
}

CONSUMER_DETAILS2类

@XmlRootElement(name = "CONSUMER_DETAILS2")
public class ConsumerDetailsDto {

private String NAME;
private String DATE_OF_BIRTH;
private String GENDER;
private String NATIONALITY;
public String getNAME() {
    return NAME;
}
public void setNAME(String nAME) {
    NAME = nAME;
}
public String getDATE_OF_BIRTH() {
    return DATE_OF_BIRTH;
}
public void setDATE_OF_BIRTH(String dATE_OF_BIRTH) {
    DATE_OF_BIRTH = dATE_OF_BIRTH;
}
public String getGENDER() {
    return GENDER;
}
public void setGENDER(String gENDER) {
    GENDER = gENDER;
}
public String getNATIONALITY() {
    return NATIONALITY;
}
public void setNATIONALITY(String nATIONALITY) {
    NATIONALITY = nATIONALITY;
}

这是解组的代码

 StringReader reader = new StringReader(responseXML);
    final JAXBContext jaxbc = JAXBContext.newInstance(ConsumerProfileDto.class);
    final Unmarshaller unmarshaller = jaxbc.createUnmarshaller();

    //create list for iteration, then iterate printing by name only
    ConsumerProfileDto c = (ConsumerProfileDto) unmarshaller.unmarshal(reader);
   System.out.println(c.getConsumerDetails());

输出

P.S

我使用过DocumentBuilder,我可以使用它来获取值。但是,我想用Jaxb提取。

0 个答案:

没有答案
相关问题