Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB。从字符串中获取布尔值_Java_Jaxb - Fatal编程技术网

Java JAXB。从字符串中获取布尔值

Java JAXB。从字符串中获取布尔值,java,jaxb,Java,Jaxb,在我的XML中 <myelem required="false"/> 如何将required属性作为布尔值读取?我可以将其读取为String,并在getter中执行以下操作:返回新的布尔值(必需) 但也许还有更优雅的方式 只需对Java类中的成员使用boolean: @XmlAttribute private boolean required; 或者,如果使用getter setter样式的映射: @XmlAttribute public boolean isRequired

在我的XML中

<myelem required="false"/>

如何将
required
属性作为布尔值读取?我可以将其读取为
String
,并在getter中执行以下操作:
返回新的布尔值(必需)

但也许还有更优雅的方式

只需对Java类中的成员使用
boolean

@XmlAttribute
private boolean required;
或者,如果使用getter setter样式的映射:

@XmlAttribute
public boolean isRequired() {
    return required;
}
JAXB解组器能够将XML文档中的
“true”
“false”
字符串解释为
布尔值

更新:

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;
    }

}
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();
        }
    }
}
我通过以下课程对此进行了测试:

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;
    }

}
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();
        }
    }
}
Test.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;
    }

}
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();
        }
    }
}
并使用以下输入(test.xml):


当输入为false时,它将工作,而不是当false作为属性值传递时。@PriyankDoshi:Nope,这就是我在成员上放置
@xmldattribute
注释的原因。它将一个成员映射到一个XML属性,.+1-我更新了您的答案以简化示例代码。我希望你不介意。很荣幸添加了这个测试,我用代码测试了我自己的注释对象的编组。可能是