我对JAXB比较陌生,但我有一个似乎很难通过在线文档解决的问题。我的目标很简单:我使用JAXB解析XML,这样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
baseFiltersType
{{1}}不会与为{{1}}对象生成的对象模型分开{强>
答案 0 :(得分:2)
您可以利用EclipseLink JAXB (MOXy)中的@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;
}
}
回答相关问题
在我对相关问题的一个回答中,我演示了如何使用MOXy的@XmlPath注释,以及适用于任何JAXB实现的StAX StreamFilter方法:
更多信息: