使用Javax@xmlement读取属性时如何预处理xml字段

使用Javax@xmlement读取属性时如何预处理xml字段,java,xml,spring-boot,xml-parsing,Java,Xml,Spring Boot,Xml Parsing,我在Spring boot项目中有properties.xml,如下所示: ... <RestConnect> <Name>OpenBanking</Name> <RestEnable>true</RestEnable> <IP>192.168.11.11</IP> <Port>3311</Port> </RestConnect> ... 它将

我在Spring boot项目中有properties.xml,如下所示:

...
<RestConnect>
    <Name>OpenBanking</Name>
    <RestEnable>true</RestEnable>
    <IP>192.168.11.11</IP>
    <Port>3311</Port>
</RestConnect>
...
它将值正确地设置到相关字段中

我想对字段进行预处理。
例如,我想检查IP是否输入正确,或者我想大写“Name”,然后将它们设置到对象字段中。如何操作?

是的,将
@xmlement
/
@xmldattribute
注释移动到getter方法

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)//仅处理带注释的字段/属性
公共类RestConnectProperties{
. . .
//删除此:@xmlement(name=“name”)
私有字符串name=“未知”;
. . .
@xmlement(name=“name”)//在此处添加
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=name.toUpperCase();//在此处处理
}
. . .
}
我更喜欢更改为,因此JAXB只使用显式注释的字段和/或属性getter/setter方法


当然,您可以继续使用,但随后您必须添加到字段中,这样您就可以通过JAXB从基于字段的处理切换到基于属性的处理。

我认为您可以使用setter方法。谢谢您,Andreas,您的回答部分解决了我的问题,但布尔字段仍然存在问题。当我在xml字段中输入“tRUE”或“tRUE”时,它会为java对象中相应的布尔字段设置“False”。例如:tRUE如何预处理此字段以使用“equalsIgnoreCase”方法,使其将值设置为“tRUE”?@SM.Hosseini XML,该
布尔值必须为
“tRUE”
“false”
“1”
,或
“0”
。JAXBs解析器非常宽松,将任何其他值解析为
false
,依靠模式验证来拒绝坏值。不要试图修复坏数据,请通过启用模式验证来拒绝它。
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class RestConnectProperties {

    @XmlElement(name = "Name")
    private String name = "Unknown";

    @XmlElement(name = "RestEnable")
    private boolean restEnable = true;

    @XmlElement(name = "IP")
    private String ip = "";

    @XmlElement(name = "Port")
    private String port = "";


    public RestConnectProperties() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isRestEnable() {
        return restEnable;
    }

    public void setRestEnable(boolean restEnable) {
        this.restEnable = restEnable;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

}