在XML JAXB上设置schemaLocation

时间:2011-11-16 22:20:04

标签: xml jaxb

我需要添加嵌套在另一个对象上的schemaLocation属性

我有一个班级......

...
@XmlRootElement(name = "Comp")
public class Comp {
...

我设置了此类设置 Marshaller.JAXB_SCHEMA_LOCATION 的对象并且效果很好,但是现在有另一个类具有这样的属性......

@XmlRootElement(name = "TSAT")
public class TSAT {
...
@XmlAnyElement(lax = true)
     protected Object any;
...

然后我使用Comp实例设置该属性,设置属性 Marshaller.JAXB_SCHEMA_LOCATION 确实添加 schemaLocation 属性但是对于 TSAT元素我想要 Comp元素

我尝试编组Comp元素,然后在任何属性上设置它,然后编组TSAT,但我将Comp包装在标记内。

我想要的是什么:

<TSAT>
   <Comp schemaLocation="uri">
   ...
   </Comp>
</TSAT>

我得到了什么:

<TSAT schemaLocation="uri">
   <Comp>
   ...
   </Comp>
</TSAT>    

<TSAT>
   <any>
   &amp;lt;Comp schemaLocation="uri"&amp;gt;
   ...
   &amp;lt;/Comp&amp;gt;
   </any>
</TSAT>

1 个答案:

答案 0 :(得分:0)

你尝试过使用不同的marshallers吗?即一个编组人员,编组对象。这个marshaller有xmlschema属性。 DOMResult中的Marshal JAXBElement。并在Tsat.any对象中设置DOMResult中的元素,然后使用另一个marshaller编组Tsat。我不保证它会起作用,但值得尝试。