【问题标题】:JAXB Get namespace from non-root element?JAXB 从非根元素获取命名空间?
【发布时间】: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


    【解决方案1】:

    我把问题留在这里,以防其他人遇到同样的问题。

    包的命名空间在 package-info.java 文件中。可以直接使用 java 方法检索此信息:

        String namespace = XmlElementName.class.getPackage().getAnnotation(XmlSchema.class).namespace();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      相关资源
      最近更新 更多