JAXB,XSD样式表和元素名称冲突解决方案

时间:2014-10-28 14:59:58

标签: java xml jaxb xsd

这更像是一个学术问题,但我开始着手配置JAXB模式验证,因为我正在研究使用多个具有元素名称冲突的模式会发生什么。是否可以配置JAXB并具有支持XML文档的模式文件,看起来像这样?

<my:inventory 
    xmlns:my="http://www.my.com"
    xmlns:ab="http://www.ab.com"
    xmlns:xy="http://www.xy.com">

    <my:products>
        <ab:product>
          <id>123</id>
          <desc>some ap product</desc>
          <price>12.22</price>
        </ab:product>
        <xy:product>
          <key>123</key>
          <title>some xy product</title>
          <cost>63.45</cost>
        </xy:product>
    </my:products>
</my:inventory>

基本思路是从AB公司和XY公司获得产品信息。两家公司拥有相同的数据,但将它们存储在不同的标签中。我希望我的公司架构能够定义其他两家公司的产品库存。

我开始为此创建XSD文件和JAXB注释类。它很快就变成了无休止的配置流和解析异常,所以我想我会问。

1 个答案:

答案 0 :(得分:1)

是的,JAXB可以支持具有多个命名空间的XML文档。您最终会得到以下内容:

@XmlAccessorType(XmlAccessType.FIELD)
public class Products {

    @XmlElement(name="product", namespace="http://www.ab.com")
    private Product product1;

    @XmlElement(name="product", namespace="http://www.xy.com")
    private Product product2;

}

了解更多信息

我在博客上写了更多关于JAXB和名称空间的内容: