3
我正在使用JAXB(包含在JDK 6中的版本)将对象编组为XML。下面的代码段产生意想不到的结果: JAXB如何将类名映射到XML元素名称?
public class JAXBTest {
@XmlRootElement
public static class VIPPerson {}
public static void main(String[] args) throws JAXBException {
StringWriter sw = new StringWriter();
VIPPerson p = new VIPPerson();
JAXB.marshal(p, sw);
System.out.println(sw.toString());
}
}
从上述的输出是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vipPerson/>
我期待看到映射到VIPPerson
元素的类名,而不是基于部分8.12 vipPerson
.1在JAXB specification中,它表示
类名称:类名称通过使用java的de大写映射到XML名称。 beans.Introspector.decapitalize(类名)。
该decapitalize
方法的JavaDoc中这样说:取一个字符串并将它转换成普通Java变量名称大写
实用方法。这通常意味着将第一个字符从大写字母转换为小写字母,,但在(不常见)特殊情况下,如果有多个字符且第一个字符和第二个字符都是大写字母,则我们将其单独留为。 因此,“FooBah”变成“fooBah”,“X”变成“x”,但“URL”保持为“URL”。
执行是否违反规范还是我误解了某些东西?
好信息 – chris 2011-02-23 23:40:52