我已经跟着这个example并且我能够忽略输入xml具有变量名称大小写的情况 .

但是,当我的Java变量具有camelCase名称时,我将getter和setter编写为getCamelCase和setCamelCase,但是预期的getter / setter是getCamelcase和setCamelcase .

拥有{g,s} etCamelCase的唯一方法是在getter / setter之上指定@XmlAttribute(name =“camelcase”) .

我认为我 class 中方法的反映将方法视为区分大小写 . 有没有办法避免必须添加@XmlAttribute(name =“camelcase”)

@XmlRootElement(name = "blah")
public class Blah {

    String listName;

    @XmlAttribute(name = "listname")  // without "listname" the attribute is not set.
    public String getListName() {
        return listName;
    }
    public void setListName(String listName) {
        this.listName = listName;
    }
}

驱动程序代码

String filename = "blah.xml";
    XMLInputFactory xif = XMLInputFactory.newInstance();
    XMLStreamReader xsr = xif.createXMLStreamReader(new FileInputStream(filename));
    Unmarshaller jaxbUnmarshaller = JAXBContext.newInstance(Blah.class).createUnmarshaller();
    Blah blah = (Blah) jaxbUnmarshaller.unmarshal(new ToLowerCaseNamesStreamReaderDelegate(xsr));
    System.out.println("blah.getListname() = " + blah.getListName());