【发布时间】:2015-10-06 15:18:32
【问题描述】:
有没有办法使用 JAXB 以编程方式从非根元素获取命名空间?
我可以在根元素上使用以下内容(Detailedreport 是根元素对象):
QName qname = jaxb.getJaxbContext().createJAXBIntrospector().getElementName( new Detailedreport());
final String namespace = qname.getNamespaceURI();
但是,如果我尝试使用同一个包中的类型,但使用非根元素,则 qname 为 null。
根据javadocs for JAXBIntrospector:
Parameter 对象是一个 JAXB 元素,适用于以下情况:
它是 javax.xml.bind.JAXBElement 的一个实例。对象类别 用@XmlRootElement 注释。
鉴于我的非根元素显然没有 @XmlRootElement,有没有办法为它获取 qname/命名空间?
或者,有没有办法以编程方式确定哪个类代表包中的根元素(无需自己扫描所有类以获取注释)?我在 package-info.java 文件中看到了命名空间,但不知道如何获取它。
【问题讨论】:
标签: java jaxb xml-namespaces