您的位置:首页 > 财经 > 产业 > adobe网页设计软件_超级外链工具_西安网站设计开发_国际机票搜索量大涨

adobe网页设计软件_超级外链工具_西安网站设计开发_国际机票搜索量大涨

2024/12/23 4:49:30 来源:https://blog.csdn.net/fxtxz2/article/details/142464036  浏览:    关键词:adobe网页设计软件_超级外链工具_西安网站设计开发_国际机票搜索量大涨
adobe网页设计软件_超级外链工具_西安网站设计开发_国际机票搜索量大涨

问题

需要生成多层嵌套xml,类似如下内容:

<A><B><C><!-- C类的字段 --></C><C><!-- 另一个C类的字段 --></C></B>
</A>

解决

C.java

import jakarta.xml.bind.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class C {@XmlElement(nillable = true)private String field1;@XmlElement(nillable = true)private String field2;
}

这里使用到了lombok。注意这里需要设置@XmlAccessorType(XmlAccessType.FIELD)不然会出现:JAXB IllegalAnnotationException is thrown during parsing XML错误。

B.java

import jakarta.xml.bind.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class B {@XmlElement(name = "C")  // 指定 XML 标签名称private List<C> cList;
}

这里设置了一个数组标签。

A.java

import jakarta.xml.bind.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class A {@XmlElement(name = "B")  // 指定 XML 标签名称private B b;
}

这里是根xml,所以,这里需要设置@XmlRootElement注解。

使用

	...StringWriter xmlWriter = new StringWriter();marshaller.marshal(uniteWorkReq, new StreamResult(xmlWriter));String xml = xmlWriter.toString();...

配置,依旧是如下方式注入:

@Beanpublic Jaxb2Marshaller marshaller() {Jaxb2Marshaller marshaller = new Jaxb2Marshaller();// this package must match the package in the <generatePackage> specified in// pom.xml
//        marshaller.setContextPath("com.cmdi.system.wsdl");marshaller.setPackagesToScan("com.xxx.xxxx.wsdl");return marshaller;}

参考

  • JAXB IllegalAnnotationException is thrown during parsing XML

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com