Java 如何编写抑制具有特定属性值的元素的模式?
我对JAXB比较陌生,但我有一个问题似乎很难通过在线文档解决。我的目标很简单:我有使用JAXB解析的XML,这样Java 如何编写抑制具有特定属性值的元素的模式?,java,schema,jaxb,Java,Schema,Jaxb,我对JAXB比较陌生,但我有一个问题似乎很难通过在线文档解决。我的目标很简单:我有使用JAXB解析的XML,这样included=false的元素就不应该成为结果对象模型的一部分 我想在模式中解决这个问题: <complexType name="baseFilterType"> <simpleContent> <extension base="string"> <attribute type="string
included=false
的元素就不应该成为结果对象模型的一部分
我想在模式中解决这个问题:
<complexType name="baseFilterType">
<simpleContent>
<extension base="string">
<attribute type="string" name="code" use="required"/>
<attribute type="boolean" name="isMandatory" default="false"/>
<attribute type="boolean" name="included" default="true"/>
</extension>
</simpleContent>
</complexType>
<complexType name="baseFiltersType">
<sequence>
<element type="rptt:baseFilterType" name="filter" maxOccurs="unbounded"
minOccurs="0" />
</sequence>
</complexType>
因此,我如何更改上面显示的模式,以便任何
baseFilterType
其中included=false
都不会成为为baseFilterType
对象生成的对象模型的一部分您可以利用中的@XmlPath扩展,我是MOXy技术负责人
@XmlRootElement
public class BaseFiltersType {
private List<BaseFilterType> filter;
@XmlPath("filter[@included='true']")
public List<BaseFilterType> getFilter() {
return filter;
}
public void setFilter(List<BaseFilterType> baseFilterType) {
this.filter = baseFilterType;
}
}
@XmlRootElement
公共类BaseFiltersType{
私有列表过滤器;
@XmlPath(“过滤器[@include='true']”)
公共列表getFilter(){
回流过滤器;
}
public void setFilter(列表baseFilterType){
this.filter=baseFilterType;
}
}
对相关问题的回答
在我对一个相关问题的回答中,我演示了如何使用MOXy的@XmlPath注释,以及一种适用于任何JAXB实现的StAX StreamFilter方法: