JAXB.从字符串中获取布尔值

MyT*_*tle 3 java jaxb

在我的XML中,我有

<myelem required="false"/>
Run Code Online (Sandbox Code Playgroud)

我如何将该required属性读作布尔值?我可以读取它String并且在吸气器内部做到这一点:return new Boolean(required) 但也许有一些更优雅的方式?

buc*_*buc 8

只需简单地使用booleanJava类中的成员:

@XmlAttribute
private boolean required;
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用getter-setter样式的映射:

@XmlAttribute
public boolean isRequired() {
    return required;
}
Run Code Online (Sandbox Code Playgroud)

该JAXB解组能够解释"true""false"XML文档中的字符串boolean值.

更新:

我用以下类测试了这个:

test/MyElem.java:

package test;

import javax.xml.bind.annotation.*;

@XmlRootElement(name="myelem")
public class MyElem {

    private boolean required;

    @XmlAttribute
    public boolean isRequired() {
        return required;
    }

    public void setRequired(boolean value) {
        required = value;
    }

}
Run Code Online (Sandbox Code Playgroud)

Test.java:

import javax.xml.bind.*;
import java.io.*;
import test.*;

public class Test {
    public static void main(String[] args) {
        try {
            JAXBContext jc = JAXBContext.newInstance(MyElem.class);
            Unmarshaller u = jc.createUnmarshaller();
            Object o = u.unmarshal( new File( "test.xml" ) );   
            System.out.println(((MyElem)o).isRequired());
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用以下输入(test.xml):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myelem required="true"/>
Run Code Online (Sandbox Code Playgroud)

我在控制台上得到了正确的结果:

true
Run Code Online (Sandbox Code Playgroud)