Я пытаюсь получить информацию из XSD, используя MOXY DynamicJAXBContext. Одно из свойств, которые я пытаюсь получить, это если атрибут или элемент обязателен . Из того, что я понимаю, если элемент имеет 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"