我有一个超级抽象类:
@XmlSeeAlso({AndQuery.class, OrQuery.class, NotQuery.class, PropertyQuery.class, MultiQuery.class})
@XmlRootElement
public abstract class Query {
这个类有一个子类:
public abstract class MultiQuery extends Query {
这个最后一个超类也有两个子类:AndQuery和OrQuery用@XmlRootNode注释。
我还有一个PropertyQuery类,它扩展了Query超类。
当我做这样的帖子时,一切都没问题:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<orQuery>
<query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
<propertyName>SenderContractNumber</propertyName>
<propertyValue>D*</propertyValue>
</query>
<query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
<propertyName>SenderContractNumber</propertyName>
<propertyValue>A*</propertyValue>
</query>
<query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="andQuery">
<query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
<propertyName>documentNumber</propertyName>
<propertyValue>222</propertyValue>
</query>
<query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
<propertyName>documentNumber</propertyName>
<propertyValue>222</propertyValue>
</query>
</query>
</orQuery>
我想要的是像这样发布一个xml:
<orQuyery>
<query>...</query>
<andQuery>
<query>...</query>
</andQuery>
</orQuery>
我对上面所说的内容。
你能告诉我我需要注释的内容,因为我的OrQuery类期望只查看查询节点而不是!
请帮忙......
非常感谢
答案 0 :(得分:1)
听起来您正试图让许多查询包含其他查询。我们只想说,您希望任何MultiQuery都包含其他查询的列表。
如果您只有一个Query类型的List,JAXB将无法确定您要将哪些类型的查询放入列表中。您可以指定列表可以包含的所有选项。这样生成的模式允许任何类型的指定。
示例:
@XmlElements({
@XmlElement(type=AndQuery.class),
@XmlElement(type=OrQuery.class),
@XmlElement(type=NotQuery.class),
@XmlElement(type=PropertyQuery.class),
@XmlElement(type=MultiQuery.class)
})
List<Query> queries;