草庐IT

jaxb_lib

全部标签

java - JAXB:如何使 JAXB 不将空字符串解码为 0

我有一个包含如下字段的DTO类:@XmlAttribute@NotNullprivateIntegernumber=null;我正在尝试解码xml,例如...number=""...我需要nuber字段保持为空,以便抛出验证异常。相反,JAXB将其解码为0。我怎样才能让它正常运行? 最佳答案 有争议,它是行为正确。number=""并不意味着null,它是一个空字符串,JAXB必须尝试正确处理它,并且它决定对于Integer数据类型最接近空字符串的是零。如果您想要一个null,那么应该完全省略number属性。如果你想定制这个行为,

java - JAXB Bean 生成

我使用JAXB在Maven中使用JAXB插件从XSD生成bean。这工作正常,期望代码包含每个字段的isSetXXXXXX()方法。例如对于字段firstName,它生成以下代码:@XmlElement(name="FirstName",required=true)protectedStringfirstName;publicStringgetFirstName(){returnfirstName;}publicvoidsetFirstName(StringfirstName){this.token=firstName;}publicbooleanisSetFirstName(){re

java - 向从模式生成的 JAXB 类添加额外的方法

这是我的XSD文件的一个简单摘录我使用maven-jaxb2-plugin从中生成Java类。Document类有一个getTitle()方法来返回title属性的文本。我想向Document添加一个额外的方法:publicStringgetStrippedTitle(){returngetTitle().replaceAll("\\s+","");}我希望我的额外方法出现在解码对象上(而不是我只是调用它或编写包装类),因为我想将顶级解码对象传递给字符串模板并让它迭代子-调用我的额外方法的元素。我找到了instructions但他们告诉我在Unmarshaller上设置一个属性,而我的

java - 具有属性的 XML 元素在 JAXB 中具有 ":"

我在获取xml文件的属性时遇到问题。这些属性是这样写的:@XmlAttribute(name="xml:lang")使用@XmlAttribute,我得到的属性是写在一个单词上的。如果我留下这个注释@XmlAttribute(name="xml:lang")我得到null如何获取“xml:lang”的属性值?谢谢。 最佳答案 xml显然是namespaceprefix.您可以尝试使用以下方式声明命名空间:@XmlAttribute(name="lang",namespace=javax.xml.XMLConstants.XML_NS

java - JAXB 不解码接口(interface)列表

JAXB似乎无法读取它所写的内容。考虑以下代码:interfaceIFoo{voidjump();}@XmlRootElementclassBarimplementsIFoo{@XmlElementpublicStringy;publicBar(){y="";}publicBar(Stringy){this.y=y;}@Overridepublicvoidjump(){System.out.println(y);}}@XmlRootElementclassBazimplementsIFoo{@XmlElementpublicintx;publicBaz(){x=0;}publicBaz

java - JAXB 绑定(bind)文件 : validation error

以下JAXB绑定(bind)文件按预期创建适配器类,但Eclipse和XMLSpy说它无效:错误是这样的:cvc-complex-type.2.4.b:Thecontentofelement'jxb:globalBindings'isnotcomplete.Oneof'{"http://java.sun.com/xml/ns/jaxb":javaType,"http://java.sun.com/xml/ns/jaxb":serializable,WC[##other:"http://java.sun.com/xml/ns/jaxb"]}'isexpected.请注意,JAXB绑定(b

java - jaxb 解码 xml 数据的默认规则是什么?

想知道,有一个没有任何注释的类,jaxb如何将xml数据解码到类中。我发现它可以接受以下内容如果我在xml中有一个节点“标签”我在类中有“_label”字段以及“getLabel”和“setLabel”方法。jaxb可以成功解码它。只想知道它的默认规则。 最佳答案 以下内容来自JAXB2规范(JSR-222):8.12DefaultMappingThissectiondescribesthedefaultmappingofprogramelements.Thedefaultmappingisspecifiedintermsofdef

java - JAXB/XJC 生成 JAXBElement<String> 而不仅仅是 String(以处理 null 大小写)

使用JDK1.7附带的JAXB/xjc(bin\xjc.exe)这是我的XSD的片段:生成的类显示:@XmlElementRef(name="Surname",type=JAXBElement.class,required=false)protectedJAXBElementsurname;publicJAXBElementgetSurname(){returnsurname;}publicvoidsetSurname(JAXBElementvalue){this.surname=value;}我知道JAXB使用JAXBElement来允许null,但这没有任何意义,因为任何声明为St

java - JAXB : XmlElementWrapper nested nodes

我想生成如下所示的XML:这就是我在代码中生成mainNode1、mainNode2和node1的方式:@XmlElementWrapper(name="mainNode")@XmlElement(name="node1")publicListgetValue(){returnvalue;}@XmlElement(name="mainNode2")publicStringgetValue2(){returnvalue2;}如何将node2添加到mainNode1? 最佳答案 仅当wrapperElement具有相同类型元素的列表时才

java - 如何使用 JAXB 编码多个对象?

我正在尝试编码多个对象,例如Book通过setBookslst()添加到BookLists中。我开始使用此JAXBContext设置:jaxbContext=JAXBContext.newInstance(BookLists.class);和jaxbMarshaller.marshal(lists,result);但是我得到了以下运行时异常:javax.xml.bind.JAXBException:com.jaxb.example.marshall.Booknoranyofitssuperclassisknowntothiscontext]我的类型定义如下。书:-@XmlRootEle