0

我的问题是如何将整数值0转换为null?以前我使用了 Xmappr 注释,它与这个注释配合得很好:

@Text 

现在我必须使用BeanIO,所以我尝试了:

@Field(xmlType=XmlType.Text) 

它不工作。

单元测试需要从 XML 文件中读取数字才能成功。如果 XML 中的 personNumber 等于 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;

如果是这样,应该指定什么格式?

4

1 回答 1

1

您可以尝试使用自定义org.beanio.types.IntegerTypeHandlerreturn 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;

我没有对此进行测试,但它应该可以工作。

于 2017-10-17T09:55:44.377 回答