Jaxb.自定义字段命名行为(camelCase到undercore_case)



我想用带下划线的名称序列化我的字段。例如:userName->user_name

我知道它可以使用@XmlElement(name = "user_name")注释来完成,但对我的情况来说不是很方便。

有什么方法可以为JAXB设置默认命名策略吗?

注意:我是EclipseLink JAXB(MOXy)的负责人,也是JAXB(JSR-222)专家组的成员。

MOXy有一个XMLNameTransformer扩展,使您能够覆盖元素、属性和类型的默认命名策略。

  • http://blog.bdoughan.com/2011/05/overriding-jaxbs-name-mangling.html

如果您从XML模式生成模型,则可以使用外部绑定文件来保留下划线。

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
  version="2.1">
  <jxb:globalBindings underscoreBinding="asCharInWord"/>
</jxb:bindings>