在我的XSD中,我有以下属性:
<xs:element name="id8digits" type="xs:string" minOccurs="0"/>
但是当我使用JAXB生成java-classes时,它将其重命名为:
@XmlElement(name = "id8digits", namespace = "my.org.name")
protected String id8Digits; // Capital D instead of lower case d
XSD由第三方提供,我无法更改XSD本身。我已阅读有关绑定文件的内容,但即使我使用小写d将属性重命名为id8digits
,JAXB也会将其重命名为大写字母D.
我也尝试过使用globalbindings并设置enableJavaNamingConventions="false"
,但这并没有成功。
bindings.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>
答案 0 :(得分:0)
你在其他地方遇到问题: -
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>