gpt4 book ai didi

java - JAXB 自行重命名属性

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:12 26 4
gpt4 key购买 nike

在我的 XSD 中,我有以下属性:

<xs:element name="id8digits" type="xs:string" minOccurs="0"/>

但是当我使用 JAXB 生成 java 类时,它将其重命名为:

@XmlElement(name = "id8digits", namespace = "my.org.name")
protected String id8Digits; // Capital D instead of lower case d

XSD 是由第三方提供的,我无法更改 XSD 本身。我已阅读有关绑定(bind)文件的内容,但即使我将属性重命名为带有小写 d 的 id8digits ,JAXB 也会再次将其重命名为大写 D。

我还尝试使用全局绑定(bind)并设置enableJavaNamingConventions="false",但这并不能解决问题。

绑定(bind).xml

<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1"><jxb:bindings schemaLocation="XSD.xsd">
<jxb:globalBindings enableJavaNamingConventions="false"/>
<jxb:bindings node="//xs:element[@name='id8digits']">
<jxb:property name="id8digits"/>
</jxb:bindings>

最佳答案

您在其他地方遇到问题:-

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
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="Test")
@XmlAccessorType(XmlAccessType.FIELD)
public class Test {

@XmlElement(name = "id8digits", namespace = "my.org.name")
protected String id8Digits;

public String getId8Digits() {
return id8Digits;
}

public void setId8Digits(String id8Digits) {
this.id8Digits = id8Digits;
}

public static void main(String[] args) throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(Test.class);
Marshaller m = jc.createMarshaller();
Test jaxbElement = new Test();
jaxbElement.setId8Digits("Testing");
m.marshal(jaxbElement, System.out);
}
}

输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Test xmlns:ns2="my.org.name"><ns2:id8digits>Testing</ns2:id8digits></Test>

关于java - JAXB 自行重命名属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com