Örneğin xsd'deki sOmE_PROPerty, java sınıfında bazı Site mülkiyeti olmayan sOmE_PROPerty olmalıdır.xjc'de Java Adlandırma Kuralları nasıl devre dışı bırakılır?
globalBindings enableJavaNamingConventions = "false" kullanmayı denedim, ancak çalışmaz.
Örneğin xsd'deki sOmE_PROPerty, java sınıfında bazı Site mülkiyeti olmayan sOmE_PROPerty olmalıdır.xjc'de Java Adlandırma Kuralları nasıl devre dışı bırakılır?
globalBindings enableJavaNamingConventions = "false" kullanmayı denedim, ancak çalışmaz.
. sun.xml.bind.api.impl.NameConverter bu gibi:
public static final NameConverter standard = new Standard();
static class Standard extends NameUtil implements NameConverter {
public String toClassName(String s) {
return s;//toMixedCaseName(toWordList(s), true);
}
public String toVariableName(String s) {
return s;//toMixedCaseName(toWordList(s), false);
}
public String toInterfaceName(String token) {
return token;//toClassName(token);
}
public String toPropertyName(String s) {
String prop = s;//toClassName(s);
// property name "Class" with collide with Object.getClass,
// so escape this.
if(prop.equals("Class"))
prop = "Clazz";
return prop;
}
Bunu bir xjc uzantısı olarak mı uyguladınız, yoksa kaynak kodunu gerçekten değiştirdiniz mi? –
@RobertoBonvallet, NameConverter arayüzünü uygulayabilir ve daha sonra halka açık statik final NameConverter standart alanını yansımayla değiştirebilirsiniz. – Smertokogt
Sen enableJavaNamingConventions="false"
yerine underscoreBinding="asCharInWord"
kullanmak gerekir:
customer.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="http://www.example.org/customer"
xmlns="http://www.example.org/customer"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="customer">
<xsd:sequence>
<xsd:element name="sOmE_PROPerty" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
binding.xml
A JAXB bağlama dosyası için şema özelleştirmek için kullanılır
Java dönüşümü: binding.xml Kullanmadanpackage org.example.customer;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "customer", propOrder = {
"sOmEPROPerty"
})
public class Customer {
@XmlElement(name = "sOmE_PROPerty", required = true)
protected String sOmEPROPerty;
public String getSOmE_PROPerty() {
return sOmEPROPerty;
}
public void setSOmE_PROPerty(String value) {
this.sOmEPROPerty = value;
}
}
:
XJC Çağrı
xjc -d out -b binding.xml customer.xsd
Müşteri
oluşturulan mülkiyet adları artık çizgi karakterini içerir
bunun yerine aşağıdaki XJC arama yaparsanız:
xjc -d out -customer.xsd
Oluşturulan özellikler çizgi içermez göreceksiniz: Sınıf com JAXB kaynak kodunu değiştirerek çözüldü
package org.example.customer;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "customer", propOrder = {
"sOmEPROPerty"
})
public class Customer {
@XmlElement(name = "sOmE_PROPerty", required = true)
protected String sOmEPROPerty;
public String getSOmEPROPerty() {
return sOmEPROPerty;
}
public void setSOmEPROPerty(String value) {
this.sOmEPROPerty = value;
}
}
Cevabınız için teşekkürler, ancak örneğinizde bile işe yaramıyor. Sadece alıcıda, burada "korumalı String sOmEPROPerty" ye ihtiyacım var. Ve ilk harfi, büyük harf ve büyük harfe çevirmek için _ harfinden büyük harfe geçmemelidir. – Smertokogt
Cevabınız için teşekkürler, aynı soruna sahip oldum, sorunun cevabını kullanarak çözdüm .. –
bu xml için çalışıyor ama biraz farklı bir sorunum var ... Bende
@Blaise Yanıtınız için teşekkürler, ancak örneğinizde bile işe yaramıyor. Sadece alıcıda, burada "korumalı String sOmEPROPerty" ye ihtiyacım var. Ve ilk harfi büyük harfe dönüştürmemek ve '_' harfini büyük harfe çevirmek zorunda olmamalıdır. – Smertokogt
Sınıfında jaxb kaynak kodunu değiştirerek çözüldü com.sun.xml.bind.api.impl.NameConverter – Smertokogt