我有一个属性:
生成的 JAXB 对象中关联的 getter 方法如下:
public String getUnits(){
if(units == null) return "metric";
else return units;
}
编组时 JAXB Marshaller 未调用 getUnits() 并且未设置该值。为什么不叫这个?
我有一个属性:
生成的 JAXB 对象中关联的 getter 方法如下:
public String getUnits(){
if(units == null) return "metric";
else return units;
}
编组时 JAXB Marshaller 未调用 getUnits() 并且未设置该值。为什么不叫这个?
架构.xsd
下面是用于生成 Java 类的 XML 模式的简化版本:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/schema" xmlns:tns="http://www.example.org/schema" elementFormDefault="qualified">
<element name="root">
<complexType>
<attribute name="units" fixed="metric"/>
</complexType>
</element>
</schema>
根
这将导致生成如下所示的类。由于@XmlAccessorType(XmlAccessType.FIELD)
已指定,您的 JAXB (JSR-222) 实现将从字段中获取值,而不是访问getUnits()
方法。
package org.example.schema;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "root")
public class Root {
@XmlAttribute(name = "units")
@XmlSchemaType(name = "anySimpleType")
protected String units;
public String getUnits() {
if (units == null) {
return "metric";
} else {
return units;
}
}
public void setUnits(String value) {
this.units = value;
}
}
了解更多信息