Как конвертировать 0 в ноль с BeanIO
У меня вопрос, как преобразовать целочисленное значение 0 в ноль? Ранее я использовал аннотацию Xmappr, и она хорошо работала с этой аннотацией:
@Text
Теперь я должен использовать BeanIO, поэтому я попытался:
@Field(xmlType=XmlType.Text)
и это не работает.
Для успешного выполнения модульного теста необходимо прочитать число из файла XML. Если personNumber из XML равно 0, он должен быть записан в массиве как ноль. В этом случае массив должен выглядеть следующим образом: [1,2, null].
XML-файл:
<Person ...> 1 </Person>
.
.
<Person ...> 2 </Person>
.
.
<Person ...> 0 </Person>
Аннотация в Java ранее:
@Text
private Integer personNumber;
Аннотация в Java сейчас:
@Field(xmlType=XmlType.Text)
private Integer personNumber;
Может быть, это то, что мне нужно указать формат в поле аннотации:
@Field(xmlType=XmlType.Text, format=....)
private Integer personNumber;
Если да, какой формат должен быть указан?
1 ответ
Вы можете попробовать использовать пользовательские org.beanio.types.IntegerTypeHandler
в return null
когда число '0'
, Что-то вроде этого:
import org.beanio.types.IntegerTypeHandler;
public class IntegerToNullTypeHandler extends IntegerTypeHandler {
/**
* {@inheritDoc}
* @see org.beanio.types.IntegerTypeHandler#createNumber(java.lang.String)
*/
@Override
protected Integer createNumber(String text) throws NumberFormatException {
if (text != null && "0".equals(text)) {
return null;
}
return super.createNumber(text);
}
}
Чтобы использовать это TypeHandler
измените поле, в котором вы хотите использовать TypeHandler
чтобы:
@Field(xmlType=XmlType.Text, handlerClass=IntegerToNullTypeHandler.class)
private Integer personNumber;
Я не проверял это, но это должно работать.