У меня проблема с преобразованием XML в объект Java, здесь я использую JAXB.
в моем случае:Как настроить JAXBContext Unmarshaller для сложного случая
XML DATA:
<persons>
<person>
<name>Aris Tonar</name>
<age />
<nickname />
<saldo />
</person>
</persons>
JAVA КЛАСС XML ДАННЫХ:
public class Person{
private String name;
private Integer age;
private String nickName;
private Integer id;
private Double saldo;
/**
*Setter and Getter
*/
}
и когда я с помощью стандартного кода JAXBContext Unmarshaller для синтаксического анализа на Java Object. с кодом:
JAXBContext context = JAXBContext.newInstance(Person.class.getPackage().getName());
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement element = (JAXBElement) unmarshaller.unmarshal(new StreamSource(new StringReader(stringOfXmlData.toString())));
Person obj = (Person) element.getValue();
это даст результат: Person имя = "Арис Тонар"
Person возраст = нуль
Person ник = ""
Person ID = нулевой
Person Saldo = нуль
, но не то, что в результате того, что я хочу, я хочу JAXB даст результат:
Person имя = «Арис Тонар»
Person возраст = 0
Person ник = ""
Person ID = нулевой
Person Saldo = 0
- я хочу, чтобы каждый элемент, который объявлен в XML-данных будет: если это значение указано JAXB будет интерпретируя он как обычный (например, элемент name), но если это значение не указано, jaxb будет интерпретировать его как значение по умолчанию (например, возраст, псевдоним, элементы салдо)
- и если элемент не объявлен в XML-данных, поэтому jaxb будет интерпретировать его как null. (например, элемент id)
Возможно ли это? может быть с настройкой кода JAXBContext?
+1 - Вы правы. –
Большое спасибо Err, ваше объяснение - это мое решение ,, –
hallo Err, у меня есть другая проблема .. Мой Java-класс, а также его аннотация xml в этом классе является результатом JAXB Binding из xsd-файла, в моем случае JAXB Binding определяет '@XmlAttribute' для свойства, поэтому как я могу назначить defaultValue для этого свойства. Спасибо, –