Unmarshall Value вне класса атрибута с JAXB - PullRequest
0 голосов
/ 12 июня 2018

У меня есть XML, который я хочу разобрать с помощью JAXB в классах Java.Каждый класс работает отлично, за исключением класса «Атрибут», который содержит «Значение».Я попытался разобрать Значение атрибута, которое всегда является другим типом данных.Иногда значение является строкой, иногда int или Double.Я знаю, что есть атрибуты и элементы в XML, но у этого XML есть фактический атрибут, называемый элементом

<InstanceHierarchy Name="HMI">
    <InternalElement Name="name" RefBaseSystemUnitPath="somepath/" ID="123-45">
        <Attribute Name="Width" AttributeDataType="xs:Integer">
            <Value>800</Value>
        </Attribute>
    </InternalElement>
</InstanceHierarchy>

Hier - мой атрибут класса:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public class Attribute {

@XmlElement //here I have also tried @XMLValue
protected Value value;
@XmlAttribute(name = "Name")
protected String name;
@XmlAttribute(name = "AttributeDataType")
protected String attributeDataType;`

, когда я отлаживаю, значение всегда равно нулю(и с @XMLValue там переменная значения читается как "\ n \ t \ t \ t").

Я должен заранее сказать, что я пробовал следующее:

  1. В классе атрибутов значение определяется как:

    @XMLValue
    protected String value;
    
  2. Я также пытался с @XMLElement и по-прежнему получал значения NULL для значения

    @XmlElement(required = true)
    protected String value;
    

3. Затем я решил создать класс "Value" и демонтировать его таким образом, как String stillне работает

Итак, я создал совершенно новый XML-файл под названием «Note.xml» для тестирования исходных данных, и этот класс I можно без проблем распаковать.«Атрибут» все еще не работает

Примечание против класса атрибутов

Кто-нибудь может мне помочь получить значение из XML?всем большое спасибо!

вот значение атрибута

...