1
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Item", propOrder = {
"code",
"name",
"price"
})
@XmlRootElement(name="inventory")
public class Item {

@XmlElement(name="catalog_num", required = true)
protected String code;

@XmlElement(name="catalog_descrip", required = true)
protected String name;

@XmlElement(name="prod_price")
protected double price;


public String getCode() {
    return code;
}

JAXBContext databaseJC = JAXBContext.newInstance(Item.class);
    Unmarshaller databaseUnmarshaller = databaseJC.createUnmarshaller();
    File databaseXML = new File("src/forum6838882/database.xml");
    Item item = (Item) databaseUnmarshaller.unmarshal(databaseXML);

我的问题是:
我怎样才能得到@XmlElement(name="catalog_num", required = true)from item 对象。我需要知道name="catalog_num"这里。

4

1 回答 1

0

JAXB (JSR-222)不提供用于内省元数据的 API。但是,您可以使用 Java 反射 API (java.lang.reflect) 来获取注释并自己检查它们。

演示

import java.lang.reflect.*;
import javax.xml.bind.annotation.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        Field field = Item.class.getDeclaredField("code");
        XmlElement xmlElement = field.getAnnotation(XmlElement.class);
        System.out.println(xmlElement.name());
    }

}

输出

catalog_num
于 2013-07-05T12:08:46.217 回答