Получение нулевых значений для элемента Xml после демаршаллинга для java объектов - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь преобразовать xml в Java объекты, но получаю нулевые значения для
TelephoneNumberId и Native. Значения в xml показывают 2144844199 и «Y» соответственно. Но после получения java объектов я могу получить индекс, но не значение.

<TelephoneNumberList index="134">
    <TelephoneNumber index="135">
        <TelephoneNumberId index="136">2144844199</TelephoneNumberId>
        <Native index="137">Y</Native>
        <PortedType index="138">NONE</PortedType>
        <Transfer index="139"/>
    </TelephoneNumber>
</TelephoneNumberList>
@Getter
@Setter
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class TelephoneNumberList {
       @XmlAttribute    
       protected String index;   

       @XmlElement(name="TelephoneNumber")
       protected List<TelephoneNumber> telephoneNumber;
}

@Getter
@Setter
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class TelephoneNumber {
       @XmlAttribute    
       protected String index;   

       @XmlElement(name="TelephoneNumberId")
       protected TelephoneNumberId telephoneNumberId;

       @XmlElement(name="Native")
       protected Native nativeValue;

       @XmlElement(name="PortedType")
       protected PortedType portedType;

       @XmlElement(name="Transfer")
       protected Transfer transfer;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class TelephoneNumberId {
       @XmlAttribute    
       protected String index;   

       protected String value;
}

@Getter
@Setter
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Native {
       @XmlAttribute    
       protected String index;   

       protected String value;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class PortedType {
       @XmlAttribute    
       protected String index;   

       protected String value;
}



@Getter
@Setter
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Transfer {
     @XmlAttribute  
     protected String index;  

}


TelephoneNumberList telephoneNumberList = OrderUtil.convertXmlStringToJavaObj(telephoneNumberListStr);

        List<TelephoneNumber> telephoneNumbers = telephoneNumberList.getTelephoneNumber();

        for (TelephoneNumber telephoneNumber : telephoneNumbers ) {
            log.info(" telephoneNumber.getTelephoneNumberId() = " + telephoneNumber.getTelephoneNumberId().getValue() );
            log.info(" telephoneNumber.native = " + telephoneNumber.getNativeValue().getValue() );
            log.info("force = " + force);
        }

При отладке я получаю нулевое значение или элемент Xml после демаршаллинга на java объекты.

Спасибо, Бандита Прадхан

1 Ответ

0 голосов
/ 18 марта 2020

Я добавил @XmlValue тег только для класса TelephoneNumberId, Native и PortedType, как показано ниже.

@XmlValue
protected String value;

И это сработало.

...