2016-06-21 1 views
0

im работает в проекте. A имеют Java Bean с некоторыми свойствами. Я отмечаю каждый атрибут с тэгом @XmlElement, как это:XML в Java, как показать @XmlElement Атрибут Java Bean Null как пустой Valuein XML (решение найдено)

@XmlElement(name="id", nillable = true) 
private String test; 

Я положил это «nillable», он показывает мне тег, даже если это нулевая верно, но это показывает мне сообщение в формате XML, когда равно нулю

<id xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> 

Но когда это пустой я хочу показать пустое значение только с тегами, как этот

<id></id> 

И я не знаю, как это сделать. Я искал, но я не нашел, вот почему я спрашиваю.

И еще 1 Вещь, могу ли я создать XML, без атрибутов? Потому что im My XML я должен генерировать aloot пустые теги, без ничего внутри, только теги, и я не хочу делать арифметику атрибутов, если я не буду использовать это, чтобы показать тег

Спасибо!

импортирует и некоторые конфигурации, что я с помощью

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name="test") 

--------- Решение ----------

Привет, ребята, я нашел решение. Я хочу поделиться, если кто-то застрял в одной и той же проблеме. Ou объявляет свойство класса пустым, что-то вроде String personName = "";

Им не нужно создавать Getters и Setters, если вы не измените это значение и просто хотите, чтобы теги в XML были пустыми.

Примечание: для этой работы вам необходимо использовать @XmlAccessorType (XmlAccessType.FIELD) в вашем классе. Спасибо всем. Bye

+0

Вы пытались добавить «обязательный = истинный» в аннотацию @XmlElement? –

ответ

1

В XML есть два способа представления значения null.

Один из вариантов - это описание xsi:nil. Он просто добавляет пустой тег для вашего атрибута, и аннотирует его как несущее значение null. Эта форма генерируется JAXB, если вы аннотируете свои атрибуты с помощью nillable = true.

Обратите внимание, что пустой пустой тег не совпадает с тегом с пустой строкой - но об этом позже.

Другой вариант не должен представлять этот атрибут вообще. В XML не будет тега для атрибута. JAXB использует этот подход по умолчанию, если вы не комментируете свой код Java с помощью nillable = true, но атрибуты будут по-прежнему иметь значения null.

И все.

Теперь, к чему вы хотите достичь.Рендеринг <id></id> в основном означает, что у вас есть атрибут id, который содержит пустую строку . Хотя вы, вероятно, могли бы найти язык, если это эквивалентно значению null (например, PL/SQL Oracle), это явно не эквивалент значения null на Java.

Кроме того, если id моделируется как long или int (или любого типа нестроковой) в вашем Java Bean, синтаксический анализатор не десериализации такой XML обратно в экземпляр компонента.

Смежные вопросы