草庐IT

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

java - JAXB:如何自定义双字段的 Xml 序列化

我有一个遗留类,有很多公共(public)双字段。所有双字段都用Double.MAX_VALUE初始化以表明它们是空的。(如果字段等于Double.MAX_VALUE,遗留序列化被编码为忽略该字段并且不序列化)。我们现在尝试使用JAXBMarshaller将此类序列化为Xml。它工作正常,除了我们要防止为等于Double.MAX_VALUE的字段生成Xml。.我们没有使用单独的JAXB模式,只是用各种javax.xml.bind.annotation标记我们的类注释。如果使用模式,您可以添加元素来指​​定自定义数据类型转换器。有什么方法可以使用注释或以编程方式执行此操作吗?尝试下面推荐

java - JAXB - 如果为 false,则抑制 boolean 属性

假设我有一个类@XmlRootElement(name="thing")publicclassThing{privateStringname;privatebooleanawesome;@XmlValuepublicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnthis.value;}@XmlAttributepublicvoidsetAwesome(booleanawesome){this.awesome=awesome;}publicbooleanisAwesome(){returnthis.