2014-10-28 63 views
1

这更像是一个学术问题,但我开始研究如何配置JAXB模式验证,因为我正在研究使用多个具有元素名称冲突的模式会发生什么。是否可以配置JAXB并且有可以支持类似这样的XML文档的模式文件?JAXB,XSD样式表和元素名称冲突解决方案

<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

是的,可以让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和命名空间在我的博客: