如何使用MOXy Dynamic JAXB查找是否需要XSD元素?

问题描述 投票:1回答:1

我正在尝试使用MOXy的DynamicJAXBContext从XSD中获取信息。我要获取的属性之一是属性或元素是否为[[required。据我了解,如果元素具有minOccurs="1",则表示它为[[必需。

问题是我还没有找到一种方法来解决这个问题。 这里是我到目前为止的代码:

DynamicJAXBContext jaxbContext = DynamicJAXBContextFactory.createContextFromXSD(is, new MyEntityResolver(), null, null); Collection<ClassDescriptor> descriptors = jaxbContext.getXMLContext().getSession().getDescriptors().values(); for (ClassDescriptor desc : descriptors) { if (desc.getJavaClassName() != null) { System.out.println("================================="); System.out.println("Class: " + desc.getJavaClassName()); desc.getMappings().forEach(dm ->{ System.out.println(dm.getAttributeName()); System.out.println(dm.getClass().getName()); if(dm instanceof XMLDirectMapping) { XMLDirectMapping xmlInfo = (XMLDirectMapping)dm; System.out.println(xmlInfo); } if(dm.getAttributeClassification() != null) { System.out.println(dm.getAttributeClassification().getName()); } if(dm.getReferenceDescriptor() != null) { System.out.println(dm.getReferenceDescriptor().getJavaClassName()); } }); } }

直到现在,我已经能够获取有关属性类型的信息(如果它是集合和集合类型。)>

我已经尝试研究dm变量的其他方法,包括isOptional()getField().isNullable(),并且对于true都返回minOccurs="1"作为属性,>

我正在尝试使用MOXy的DynamicJAXBContext从XSD中获取信息。我要获取的属性之一是是否需要属性或元素。据我了解,如果一个元素...

java xsd jaxb moxy
1个回答
0
投票
if(dm.getField() instanceof XMLField) { XMLField field = (XMLField)dm.getField(); System.out.println(field.isRequired()); }
© www.soinside.com 2019 - 2024. All rights reserved.