jaxb 相关问题

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

JAVA/XML 解析所有 ref

我们正在使用一个包含许多引用的大型 XML 文档。使用 JAXB,我们成功地解组了文档。使用一种方法,我们传递节点以使用简单的三元运算符解析引用:

回答 1 投票 0

无法使用jaxb读取xml属性

我有这个xml文件 我有这个xml文件 <?xml version="1.0" encoding="utf-8" ?> <rsm:CrossIndustryInvoice xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ram:IssueDateTime> <udt:DateTimeString format="102">20230101</udt:DateTimeString> </ram:IssueDateTime> </rsm:CrossIndustryInvoice> 我创建了 CrossIndustryInvoice 类: import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "CrossIndustryInvoice", namespace = NamespaceMapper.RSM_URI) @XmlAccessorType(XmlAccessType.FIELD) public class CrossIndustryInvoice { @XmlElement(name = "IssueDateTime", namespace = NamespaceMapper.RAM_URI) private IssueDateTime issueDateTime; public IssueDateTime getIssueDateTime() { return issueDateTime; } public void setIssueDateTime(IssueDateTime issueDateTime) { this.issueDateTime = issueDateTime; } @Override public String toString() { return "CrossIndustryInvoice{" + "issueDateTime=" + issueDateTime + '}'; } } 和发行日期时间 import javax.xml.bind.annotation.*; @XmlRootElement(name = "IssueDateTime", namespace = NamespaceMapper.RAM_URI) @XmlAccessorType(XmlAccessType.FIELD) public class IssueDateTime { @XmlElement(name = "DateTimeString", namespace = NamespaceMapper.UDT_URI) private String dateTimeString; @XmlAttribute(name = "format") private String format; public String getDateTimeString() { return dateTimeString; } public void setDateTimeString(String dateTimeString) { this.dateTimeString = dateTimeString; } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } @Override public String toString() { return "IssueDateTime{" + "dateTimeString='" + dateTimeString + '\'' + ", format='" + format + '\'' + '}'; } } 当我尝试解组时,格式属性始终为空。 我试图通过 setter 和 getter 方法更改 @XmlAttribute 但它生成以下异常: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:1 次 IllegalAnnotationExceptions 该类有两个同名的属性(“格式”) Maven 依赖项如下: <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> </dependency>

回答 0 投票 0

XSD 到 JAXB 文件和 JAXB 到具有数据库关系的 JPA 实体类

我正在尝试从 xsd 文件创建 JPA 实体类。我使用 xjc 命令将 xsd 文件转换为 JAXB 文件。但我无法将 JAXB 转换为 JPA 实体类。我不能使用 hyperJAXB 因为大多数 ...

回答 1 投票 0

true 布尔属性在服务器端接收时变为 false

我有一个用 jersey 和 JAXB 实现的客户端,我想发送一个 pojo 类将 Rest web 服务抛出到 .Net API 服务器端。当我将布尔属性设置为 true 并将其发送到服务器时,...

回答 0 投票 0

验证未编组对象的数字签名失败

我按照本指南签署和验证 XML 消息 https://www.oracle.com/technical-resources/articles/java/dig-signature-api.html。验证使用生成的文档。这个应用程序...

回答 0 投票 0

JAXB元帅setProperty com.sun.xml.bind.CharacterEscapeHandler

我正在尝试覆盖 JAXB 编码中特殊字符的转义。 为此,我使用了一个实现 CharacterEscapeHandler 的接口。 这是界面: 打包项目1; impo...

回答 2 投票 0

无法从响应 jaxb java 转换为布尔值

在 java 6 中,我尝试从服务中获取数据。 IT 有时返回布尔值,有时返回字符串,所以我为字符串示例响应制作了通用响应类: { “数据”:“D”, &...

回答 0 投票 0

间歇性地为 Jakarta 实施获取 JAXBException

我的应用程序间歇性地出现 JAXBException,需要一些帮助来理解它发生的原因。当我尝试将对象转换为 XML 时会发生这种情况 private String getXml(请求请求)...

回答 0 投票 0

\org\glassfish\jaxb\jaxb-xjc .3.2\jaxb-xjc-2.3.2.jar!\META-INF ersions\9" 不是有效的文件名:{1}:无效的文件路径 - >

我有 Maven 3 构建问题。 Maven 是 mvn -v 阿帕奇 Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven 主页:D:\Java pache-maven-3.8.6 Java 版本:11.0.15,供应商:Oracle Corporation,

回答 0 投票 0

Maven jaxb2:xjc 无法生成代码

我在 pom.xml 的 Maven 构建中添加了以下插件 org.codehaus.mojo jaxb2-maven-插件 ...

回答 10 投票 0

org.springframework.oxm.UncategorizedMappingException:未知的 JAXB 异常

我正在从 Spring Boot 2.7.6 迁移到 Spring Boot 3.0.5,从 Java 11 迁移到 Java 17。调用 soap 客户端时,我在运行时遇到这个错误:jakarta.xml.bind.JAXBException: class MyClass。 ..

回答 0 投票 0

JavaFX ObservableList具体实现

我有使用 JAXB 从 XSD 生成的类。 JAXB 自定义绑定的选项之一是指定 java.util.List 实现类。例如,我可以指定 JAXB 使用

回答 2 投票 0

重用信封名称空间创建 SOAP 主体

我需要通过以下方式创建 SOAP 消息(注意示例:SomeCommand): 我需要通过以下方式创建 SOAP 消息(注意 example:SomeCommand): <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="example.com"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <example:SomeCommand> <Field1>field1</Field1> <Field2>field2</Field2> </example:SomeCommand> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 我有以下代码: public String marshal() throws Exception { SomeCommand someCommand = new SomeCommand("field1", "field2"); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); Document document = documentBuilderFactory.newDocumentBuilder().newDocument(); Marshaller marshaller = JAXBContext.newInstance(SomeCommand.class).createMarshaller(); marshaller.marshal(someCommand, document); SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(); soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration( "example", "example.com"); soapMessage.getSOAPBody().addDocument(document); OutputStream outputStream = new ByteArrayOutputStream(); soapMessage.writeTo(outputStream); return outputStream.toString(); } SomeCommand在哪里: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "") @XmlRootElement(namespace = "example.com", name = "SomeCommand") public class SomeCommand { @XmlElement(name = "Field1", required = true) private String field1; @XmlElement(name = "Field2", required = true) private String field2; public SomeCommand(){} public SomeCommand(String field1, String field2){ this.field1 = field1; this.field2 = field2; } } 但结果是: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="example.com"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <ns2:SomeCommand xmlns:ns2="example.com"> <Field1>field1</Field1> <Field2>field2</Field2> </ns2:SomeCommand> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 有没有什么方法可以在 SOAP 消息的正文中附加一个文档,重用现有的命名空间 (example) 而不是重新定义它们? 提前致谢。

回答 0 投票 0

使用外部命名空间创建 XML 内容

我需要通过以下方式创建 SOAP 消息(注意示例:SomeCommand): 我需要通过以下方式创建 SOAP 消息(注意 example:SomeCommand): <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="example.com"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <example:SomeCommand> <Field1>field1</Field1> <Field2>field2</Field2> </example:SomeCommand> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 我有以下代码: public String marshal() throws Exception { SomeCommand someCommand = new SomeCommand("field1", "field2"); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); Document document = documentBuilderFactory.newDocumentBuilder().newDocument(); Marshaller marshaller = JAXBContext.newInstance(SomeCommand.class).createMarshaller(); marshaller.marshal(someCommand, document); SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(); soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration( "example", "example.com"); soapMessage.getSOAPBody().addDocument(document); OutputStream outputStream = new ByteArrayOutputStream(); soapMessage.writeTo(outputStream); return outputStream.toString(); } SomeCommand在哪里: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "") @XmlRootElement(namespace = "example.com", name = "SomeCommand") public class SomeCommand { @XmlElement(name = "Field1", required = true) private String field1; @XmlElement(name = "Field2", required = true) private String field2; public SomeCommand(){} public SomeCommand(String field1, String field2){ this.field1 = field1; this.field2 = field2; } } 但结果是: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="example.com"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <ns2:SomeCommand xmlns:ns2="example.com"> <Field1>field1</Field1> <Field2>field2</Field2> </ns2:SomeCommand> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 有没有什么方法可以在 SOAP 消息的正文中附加一个文档,重用现有的命名空间 (example) 而不是重新定义它们? 提前致谢。

回答 0 投票 0

在 Java 中解析 SOAP 响应的最佳方法是什么

我使用 saaj 调用 soap api 并将响应存储在文件中。以下是回应的一部分: 我使用 saaj 调用 soap api 并将响应存储在文件中。以下是部分回复: <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <AdjPriceResponse xmlns="http://tsetmc.com/"> <AdjPriceResult> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="TseAdjPrice"> <xs:element name="TseAdjPrice" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="TseAdjPrice"> <xs:complexType> <xs:sequence> <xs:element name="InsCode" type="xs:long" minOccurs="0" /> <xs:element name="DEven" type="xs:int" minOccurs="0" /> <xs:element name="PClosing" type="xs:decimal" minOccurs="0" /> <xs:element name="PClosingNoAdj" type="xs:decimal" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <TseAdjPrice xmlns=""> <TseAdjPrice diffgr:id="TseAdjPrice1" msdata:rowOrder="0"> <InsCode>180774784936665</InsCode> <DEven>20100707</DEven> <PClosing>1786</PClosing> <PClosingNoAdj>2136</PClosingNoAdj> </TseAdjPrice> <TseAdjPrice diffgr:id="TseAdjPrice2" msdata:rowOrder="1"> <InsCode>180774784936665</InsCode> <DEven>20110724</DEven> <PClosing>1865</PClosing> <PClosingNoAdj>2215</PClosingNoAdj> </TseAdjPrice> </TseAdjPrice> </diffgr:diffgram> </AdjPriceResult> </AdjPriceResponse> 我使用“JAXB”创建bean类,但是出现了这个错误: Complex type and its child element share the same name "TseAdjPrice". Use a class customization to resolve this conflict. 我尝试绑定外部文件来解决它,但我不知道在哪里以及如何将它添加到项目中,所以我将xsd和xml文件中的根元素名称从“TseAdjPrice”更改为“MainTseAdjPrice”并成功生成MainTseAdjPrice.java 类与 Jaxb。但我又遇到了另一个错误: The prefix "diffgr" for attribute "diffgr:id" associated with an element type "TseAdjPrice" is not bound. 我继续调试我的代码,最后我成功地通过省略多行输出代码来解析输出。这是修改后的输出: <?xml version="1.0" encoding="UTF-8"?> <MainTseAdjPrice> <TseAdjPrice diffgrid="TseAdjPrice1866" msdatarowOrder="1865"> <InsCode>71744682148776880</InsCode> <DEven>20120521</DEven> <PClosing>915</PClosing> <PClosingNoAdj>1265</PClosingNoAdj> </TseAdjPrice> <TseAdjPrice diffgrid="TseAdjPrice1867" msdatarowOrder="1866"> <InsCode>71744682148776880</InsCode> <DEven>20140312</DEven> <PClosing>1630</PClosing> <PClosingNoAdj>1780</PClosingNoAdj> </TseAdjPrice> </MainTseAdjPrice> 我省略输出是否正确?有没有更好的方法在不修改输出的情况下解析 xml? 我也有相同格式的响应试图解析,你有参考你是如何实现的?

回答 1 投票 0

无法在辅助项目的 maven-jaxb2-plugin 中扩展基本模式

我无法从另一个项目扩展 xsd 架构。 我在 jar 项目 (ModelBase:jar) 中有一个 basemodel.xsd,它还包含通过 maven-jaxb2-plugin 生成的类。 我正在尝试扩展...

回答 1 投票 0

带有 GraalVM 原生镜像的 Micronaut 应用程序

我正在尝试从我的 Micronaut 项目构建一个 GraalVM 本机应用程序。我在其中使用 JAXB 来读取和写入一些 XML 文件。该应用程序工作正常,通过直接运行它或构建...

回答 0 投票 0

是否有 JAXB 3.0 (Jakarta EE 9) 的 Maven 插件?

当前的 maven 插件,如 jaxb2-maven-plugin 和 maven-jaxb2-plugin 使用包 javax.xml 而不是 Jakarta EE 的新 jakarta.xml 包生成代码。好像没办法确认...

回答 4 投票 0

Java XML 解组在使用 JAXB 的符号 (&) 上失败

我有以下 XML: ... 测试&地址 ... 当我尝试解组时...

回答 4 投票 0

How to parse this XML with Jackson?

我有一个 XML 文档,我想使用 Jackson XML 进行解析: 文字 我制作了这些数据类以包含...

回答 0 投票 0

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