Tag: jaxb

JAXB – 如何使用Map中的属性创建XML元素?

我需要这样的东西 – …. 我有Map for LowLevel元素,我希望像上面的XML一样填充其条目。 使用JAXB封装/绑定它的方法是什么?

JAXB:无法解组JAXBElement ,而是获取ElementNSImpl

与JAXB相关:如何实现与JAXB兼容的变体包装类? ,我尝试使用JAXBElement来表示“变体”或“任何类型”。 编组运行正常,但在Unmarshalling期间, JAXB尝试将ElementNSImpl分配给JAXBElement字段。 测试代码 (复制粘贴+ +运行) import static java.lang.System.*; import java.io.*; import java.util.*; import javax.xml.bind.*; import javax.xml.bind.annotation.*; import javax.xml.namespace.*; import org.junit.*; public class _JaxbElementProblem { @XmlRootElement @XmlType @XmlAccessorType(XmlAccessType.NONE) static class MyObject { public static final QName VARIANT_NAME = new QName(“QQQ”); @XmlAnyElement(lax = true) private JAXBElement single = null; @XmlElementWrapper(name = “elements”) @XmlAnyElement(lax = true) […]

在不定义其他模块的情况下,使用Spring JAXB Marshaller和Java 9的正确方法

为了说明我的问题,我创建了一个小的spring boot示例应用程序。 该应用程序的目的是创建一个Jaxb2Marshaller bean。 @SpringBootApplication public class App implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(App.class, args); } @Bean public Jaxb2Marshaller jaxb2Marshaller() { Jaxb2Marshaller bean = new Jaxb2Marshaller(); bean.setContextPath(“ch.sahits.game.helloworld”); return bean; } @Override public void run(String… args) throws Exception { System.out.println(“Started up”); } } 此代码无法启动exception: Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) […]

使用通用的@XmlJavaTypeAdapter解压缩包装在Guava的Optional中

我正在尝试使用通用的XmlJavaTypeAdapter将一些xml解组为包含在Guava的Optional中的java对象。 但是,我无法使用generics来正常工作。 我正在使用eclipselink 2.5.1 / moxy XML: Test Test Page.java: import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.eclipse.persistence.oxm.annotations.XmlPath; import com.google.common.base.Optional; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement() public class Page { @XmlPath(“label”) private Label label; @XmlJavaTypeAdapter(OptionalLabelAdapter.class) private Optional description = Optional.absent(); } Label.java: import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlValue; @XmlAccessorType(XmlAccessType.FIELD) public class Label { @XmlValue private String text; […]

从Ant中的JAXB类文件生成XML模式

是否可以使用shemagen ant Task从类文件而不是源文件生成xsd模式?

maven-jaxb2-plugin在同一个项目中重用公共XSD

我有一个项目,它有一个模式A和B,都在同一个命名空间内。 两个导入模式C也使用相同的命名空间。 如何为A和B生成JAXB类以分离包,同时将生成的C中的JAXB类重用到commons包中? 我已经知道我应该使用剧集并使用为模式C生成的剧集作为模式A和B的单独执行的绑定文件。问题是我不知道如何引用这个生成的剧集文件。 这是一个例子: org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.12.3 generate-sources-C generate com.mymodel.commons ${project.build.directory}/generated-sources/xjc-commons src/main/resources/xsd/mymodel/c.xsd generate-sources-A generate com.mymodel.a src/main/resources/xsd/mymodel/a.xsd generate-sources-B generate com.mymodel.b src/main/resources/xsd/mymodel/b.xsd 这会导致在下面创建一个剧集文件: target/generated-sources/xjc-commons/META-INF/sun-jaxb.episode 如何在A和B的执行中引用此剧集/绑定文件? 使用Episodes只提到如何从其他jar依赖项中引用一个剧集文件(或者我只是不能正确理解它,这更有可能)。 我已经看到一个较旧的答案建议将它作为参数-b传递给XJC,但这似乎对我没有任何作用。 我仍然最终生成了三次与C相同的类。

Jaxb 2.0 Schemavalidation问题

我正在使用Jaxb 2.x并尝试使用以下教程使用给定的XSDvalidationXML文档 教程链接 她是我写的代码 unmarshaller.setSchema(schema); SAXSource source = new SAXSource(new InputSource(xmlFileLocation)); Validator validator = schema.newValidator(); validator.setErrorHandler(new XMLErrorHandler()); try { validator.validate(source); } catch (SAXException e) { 我的XMLErrorHanlder类有以下签名 public class XMLErrorHandler implements ErrorHandler { public void error(SAXParseException exception) throws SAXException { xmlUnmarshaller.setValidationFlag(true); log.error( “Line:Col[” + exception.getLineNumber() + “:” + exception.getColumnNumber() + “]:” + exception.getMessage()); exception.printStackTrace(); } } […]

如何用JAXB编组注释为@XmlAttachmentRef的DataHandler?

我正在尝试使用JAXB(2.1.12)编组一个具有DataHandler字段的对象。 对于流支持, DataHandler使用@ XmlAttachmentRef注释。 通过Web服务进行序列化和流式处理(JBoss上的Metro)工作正常,但是使用JAXB进行简单的编组却没有。 这是一个精简的例子: public class DataHandlerAttachmentSerialization { @XmlRootElement static class RootObject { @XmlElement @XmlAttachmentRef // Works without this, but required for streaming DataHandler dataHandler = new DataHandler( new com.sun.xml.ws.util.ByteArrayDataSource( ” “.getBytes(), “application/octet-stream”)); } @Test public void test() throws JAXBException { JAXBContext context = JAXBContext.newInstance(RootObject.class); Marshaller marshaller = context.createMarshaller(); StringWriter writer = new […]

JAXB可以生成ArrayList而不是List吗?

JAXB以List<JAXBElement>生成属性。 有没有什么方法可以生成ArrayList?

JAXB – 从XSD生成类 – 将枚举转换为字符串

使用JAXB,我们直接生成Java bean。 在XSD中,我们有一个枚举类型: JAXB使用此类型为字段生成枚举类型。 我们希望将它转换为生成的Java类中的String,因为这些类映射到ActionScript类,并且ActionScript中没有枚举类型。 有没有办法做到这一点,实现某种转换器? 可以使用XmlJavaTypeAdapter吗?