gpt4 book ai didi

java - 使用保留下划线的 xjb 覆盖 JAXB 属性名称

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:50 25 4
gpt4 key购买 nike

自定义 xjb 非常适合根据需要覆盖名称,但是我们丢失了名称中的下划线。

<?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 schemaLocation="foo.xsd">
<jxb:bindings node="//xs:complexType[@name='fooType']">
<jxb:property name="value" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>

如您所见,对于上面的 xjb,生成的 java 代码是

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"value"
})
public class FooType {

@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> value;
......
public List<Object> getValue() {
if (value == null) {
value = new ArrayList<Object>();
}
return this.value;
}

现在,一旦我将上面的 xjb 中的一行更改为:

 <jxb:property name="_value" />

java 代码中所有的变化是:

public List<Object> get_Value() {
if (value == null) {
value = new ArrayList<Object>();
}
return this.value;
}

观察到:“值(value)”

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"value"
})

所需:“_value”

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"_value"
})

最佳答案

下面的 propOrder 很好,因为指定了 @XmlAccessorType(XmlAccessType.FIELD) 并且字段的名称是 value,即使属性称为 _Value(请参阅:http://blog.bdoughan.com/2012/02/jaxbs-xmltype-and-proporder.html)。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"value"
})

The goal is to have the "value" appear as "_value" in my json

您的特定 _Value 属性似乎能够容纳任何东西。您希望如何将内容呈现为 JSON?

@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> value;

关于java - 使用保留下划线的 xjb 覆盖 JAXB 属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com