Java JAXB。从字符串中获取布尔值
在我的XML中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
<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-我更新了您的答案以简化示例代码。我希望你不介意。很荣幸添加了这个测试,我用代码测试了我自己的注释对象的编组。可能是