jaxb 相关问题

用于XML绑定的Java体系结构是将XML用作域对象的Java标准。它提供了一种将Java类映射到XML表示的简单机制。

是否可以从 Fhir XML 模式 (.xsd) 或 Fhir JSON 模式生成带有 Jackson 注释的 POJO 类?

在JDK中我们可以使用xjc *.xsd命令来生成POJO。生成的类将具有 XML 注释,例如 jakarta.xml.bind.annotation.XmlType。 但我对 Jackson 的 POJO 感兴趣

回答 1 投票 0

如何指定特定的 JAXB 实现?

似乎我过去已经做过一次,但我找不到任何关于我为使其工作所做的事情的参考。 我有一个 Web 应用程序,我想在其中指定不同的...

回答 2 投票 0

While 循环在解组时不循环遍历整个 xml 字符串

我有一个已解组的 xml 字符串,但它只返回第一部分。我相信我的 while 循环不正确。 while(xsr.hasNext()){ if(xsr.isStartElement() && "list".equa...

回答 1 投票 0

JAXB 解组单元测试在 Eclipse 中成功,但在 gradle 测试中失败并显示“JAXB 无法处理接口”

这是一个单元测试,当我在 Eclipse 中运行它时,它可以成功运行,但当我使用 gradle 命令行“gradle test”运行它时,它会失败。 包 com.mycompany.user; 导入静态 org.junit.Assert。

回答 1 投票 0

JAXB 未将请求类转换为所需的 xml 格式

我有一个 springboot 模块,我在其中使用 @XmlRootElement(name='request') 重命名它为 api 休息调用创建的 xml 请求,但代码正在生成带有类名 ins 的请求...

回答 1 投票 0

Spring Boot 项目不断抱怨 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 即使我已经添加了依赖项

将 Spring Boot 从 2.1.9 JDK 8 升级到 2.7.16 JDK 17 我知道 JAXB 需要作为依赖项包含在内,并且我已将以下行添加到 build.gradle 实施组:'javax.xml.

回答 1 投票 0

Jackson 在序列化为 JSON 时无法考虑 @XmlElement

我有一个合约类,其中包含带有 @XmlElement 标记的元素。对于前 @XmlElement(名称 = "余额") 受保护金额余额金钱; 使用 JAXBContext 我能够生成 xm...

回答 3 投票 0

JAXB 3 在 setter 方法中支持属性更改

过去存在 org.jvnet.jaxb2maven 插件的 property-listener-injector 插件。 人们仍然可以在 Maven 中央仓库中找到该插件:org.jvnet.jaxb2-commons:property-listener-

回答 1 投票 0

将 JAXB 从 javax 迁移到 jakarta 后,XJC 抛出 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException [已关闭]

我想要实现的目标 将 Spring 应用程序(不是 Spring boot)从 Java 8 移至 17,将 Tomcat 8 移至 10。 问题 遵循这个问题后,我替换了 javax 库(主要用于 xml bin...

回答 1 投票 0

通过 java 套接字发送 xml 字符串的最佳方式是什么?

我尝试了这个,但是在某个地方我无法读取服务器的响应。 (响应采用 XML 格式)。 我读到由于字符串损坏,通过套接字写入需要缓冲。

回答 2 投票 0

是否可以显式地将 jaxb 指向其存根

我已经为实现 xacml 规范模型的 Web 服务生成了类,并具有以下包: oasis.names.tc.xacml._3_0.core.schema.wd_17(不是 jaxb)。 我也有一个扩展...

回答 1 投票 0

Maven 和 XSD [错误] 无法执行目标 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate (default): 无法解析输入模式

我正在开发一个应用程序,该应用程序在 XSD 文件中有许多 maxOccurs="unbounded",例如 和 我正在开发一个应用程序,该应用程序在 XSD 文件中有许多 maxOccurs="unbounded" ,例如 <xs:element name="bar" maxOccurs="unbounded" /> 和 <xsd:choice maxOccurs="unbounded"> 我了解到这实际上是一个使其不受限制的漏洞,我将其首先更改为“4095”,然后更改为“100”,并且在运行 mvn clean install 时,两者都抛出以下错误 [INFO] --- jaxb2:0.12.3:generate (default) [INFO] Up-to-date check for source resources [[file: filesnames..... ]] [INFO] Sources are not up-to-date, XJC will be executed. [ERROR] Failed to execute goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate (default) on project projectName: Unable to parse input schema(s). Error messages should have been provided. -> [Help 1] 如何解决这个问题? maxOccurences 中可以使用的最大数量是多少? 过去,我在使用 maven-jaxb2-plugin 时也遇到过严重的问题,这一次又一次令人沮丧,因为我找不到极其有用的 Maven 插件文档。 从这些天开始,我就使用 org.codehaus.mojo:jaxb2-maven-plugin。 如果您不想切换到 jaxb2-maven-plugin,您至少应该考虑使用较新版本的插件。 0.15.3 版本对我有用。 一些注意事项: 在 0.12.3 中,我需要向插件添加一些依赖项以使其正常工作,而在 0.15.3 中我必须将其删除。 现在整个 javax 课程已转移到雅加达。因此,最新的插件版本可能不适合您。

回答 1 投票 0

无法调用“com.sun.org.apache.xml.internal.dtm.ref.ExtendedType.getNodeType()”

我随机看到以下错误(不是每次)。 将 jaxb 对象转换为 xml 时出错 引起原因:java.lang.NullPointerException:无法调用“com.sun.org.apache.xml.internal.dtm.ref。

回答 1 投票 0

将 JAXBContext 注入 spring

我正在尝试将 JAXBContext 注入到 Spring 应用程序上下文中,方法是: 我正在尝试将 JAXBContext 注入到 Spring 应用程序上下文中,通过: <bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance"> <constructor-arg type="java.lang.Class" value="com.package.MyClassName"/> </bean> 它抛出异常: 找不到匹配的工厂方法:工厂方法“newInstance” 我也尝试: <bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance"> <constructor-arg type="java.lang.String" value="com.package"/> </bean> 它抛出一个异常: javax.xml.bind.JAXBException:“com.package”不包含 ObjectFactory.class 或 jaxb.index 我确实在包“com.package”中放置了一个 jaxb.index 文件,并且文件中有一行“MyClassName”。 @Tomasz 的答案是我推荐的解决方案,但如果您想坚持使用 JAXBContext,那么您的第一个示例失败的原因是 static getInstance() 上的 JAXBContext 方法不接受单个 Class 参数,它需要它们的可变参数列表。所以你需要注入一个列表,而不是单个类: <bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance"> <constructor-arg value-type="java.lang.Class"> <list> <value>com.package.MyClassName</value> </list> </constructor-arg> </bean> 你尝试过 Spring OXM 吗?最后一行很重要,命名空间仅供参考: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oxm="http://www.springframework.org/schema/oxm" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-1.5.xsd"> <oxm:jaxb2-marshaller id="marshaller" contextPath="com.package"/> </beans> 参见8.4。基于 XML 模式的配置。您的类路径中还需要 spring-oxm。 这将解决 spring env 中的 jaxb.index 文件或 ObjectFactory 问题。提供包的值,其中的类是生成 xml 的 <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="packagesToScan" > <value>com.adarsh.spring.integration.entities</value> </property> </bean>

回答 3 投票 0

XJC / Jakarta 更新导致生成 `Map<QName, String> otherAttributes`,从而导致运行时问题

升级到雅加达给我带来了一些问题。 我正在使用以下 Maven 插件: org.patrodyne.jvnet hisrc-higherjaxb40-maven-插件 升级到雅加达给我带来了一些问题。 我正在使用以下 Maven 插件: <groupId>org.patrodyne.jvnet</groupId> <artifactId>hisrc-higherjaxb40-maven-plugin</artifactId> 我使用情节编译(有库)。突然我面临以下问题: Can't have @XmlAnyAttribute when a base class has it already. this problem is related to the following location: at @jakarta.xml.bind.annotation.XmlAnyAttribute() 仔细检查发现XJC突然生成了以下字段: @XmlAnyAttribute private Map<QName, String> otherAttributes = new HashMap<>(); 它之前没有生成。我怎样才能禁用这个功能? 如评论中所述,根本原因在于JAXB-RI,请参阅#1735、#1356和#1146。 但是,hisrc-basicjaxb的下一个版本(无预计发布时间)将包含一个名为 fixOtherAttributes 的新 XJC 插件。该插件迭代 XJC 类轮廓并删除重复的 otherAttributes 字段及其关联的 @XmlAnyAttribute、getter 和 setter 方法。 注意: 该插件需要将之前剧集中的 JAR 作为依赖项添加到 XJC 类路径中。特别是,在用于运行 XJC 的 Maven 插件中配置为依赖项。反射用于检测前一集 JAR 中的 original otherAttributes 字段。 免责声明:我是hisrc-basicjaxb项目的维护者。

回答 1 投票 0

创建具有特定名称但任意结构的 XSD 元素

我正在尝试在 XSD 中创建一个内部元素来呈现不同类型的 XML 所以预期的 XML 结构将是这样的: 我正在尝试在 XSD 中创建一个内部元素来呈现不同类型的 XML 所以预期的 XML 结构将是这样的: <root> <something> <specificName> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> etc </specificName> </something> </root> 当我使用xs:any时,生成的Java类包含这个 我希望元素的 name 是 specified,但可以是任何类型。 问题是我尝试在“any”元素中设置的每个元素都是附加,而不是设置,创建此 XML 结构: <root> <something> <any> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> etc </any> </something> </root> 我想要其中一个: 让 JaxB 以某种方式知道(通过绑定?)元素名称将设置为“specifiedName” 在反序列化过程中忽略“任何”元素 PS:我知道 xs:anyType 解决了这个问题,但我想特别表明,我将在宽松的进程上下文中为该元素使用任何命名空间 基本上你自己回答了。您需要一个包含 any: 的元素 public class SpecificName { @XmlAnyElement(lax = true) private Object any; ... } public class Something { @XmlElement private SpecificName specificName; ... } 请注意,如您的示例所示,拥有第二个 XML 声明是行不通的。

回答 1 投票 0

发生 JAXBException:类 com.jaxb.model.copy.copy.Snapshot 及其任何超类对此上下文都是已知的..

有人可以帮我解决这个问题吗? 发生 JAXBException :此上下文已知类 com.jaxb.model.copy.copy.Snapshot 或其任何超类。 接口 JaxbWebResource 包装...

回答 2 投票 0

@XmlElementWrapper 生成空列表

我正在使用 JAXB 通过 Spring Boot 3.0.8 和 Java 17 来解组一些 http 客户端响应, jakarta.xml.bind jakarta.xml.bind...

回答 1 投票 0

JAXB Maven 插件不会生成 Java 枚举

我的 XSD 文件中有以下代码片段。我希望它生成一个包含 STANDALONE 和 CONNECTED 这两个元素的 Java 枚举。 我的 XSD 文件中有以下代码片段。我希望它生成一个包含两个元素 STANDALONE 和 CONNECTED 的 Java 枚举。 <xs:attribute name="Sample"> <xs:annotation> <xs:documentation>A sample</xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Standalone"/> <xs:enumeration value="Connected"/> </xs:restriction> </xs:simpleType> </xs:attribute> 我正在使用 jaxb2-maven-plugin 版本 3.1.0 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <executions> <execution> <id>gen-infrastructure</id> <goals> <goal>xjc</goal> <!-- Generates Java sources from XML Schema(s). --> </goals> <configuration> <locale>en,US</locale> <xjbSources> <xjbSource>src/main/resources/schema/xsd/sample.xjb</xjbSource> </xjbSources> <sources> <source>src/main/resources/schema/xsd/sample.xsd</source> </sources> <!-- The package of your generated sources --> <packageName>com.company.sample.model.pojos</packageName> </configuration> </execution> </executions> <configuration> <noGeneratedHeaderComments>true</noGeneratedHeaderComments> <clearOutputDir>false</clearOutputDir> </configuration> </plugin> 我在 GitHub 上寻找了同样的问题。我问我公司的另一位员工是否有解决方案或看到出了什么问题。 尝试 <xs:attribute name="Sample" type="MyEnum"> <xs:annotation> <xs:documentation>A sample</xs:documentation> </xs:annotation> </xs:attribute> <xs:simpleType name="MyEnum"> <xs:restriction base="xs:string"> <xs:enumeration value="Standalone"/> <xs:enumeration value="Connected"/> </xs:restriction> </xs:simpleType> 我不知道你是否使用命名空间。也许您必须在属性定义中的 type 属性中添加一个。

回答 1 投票 0

如何在没有根元素的情况下将 java 对象列表编组/解组到 XML?

我有一个java对象列表,其结构如下 @XmlRootElement(名称 = "员工") @XmlAccessorType (XmlAccessType.FIELD) 公开课员工 { 私有整数 ID; 私人...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.