我正在使用一些JAXB生成的类。
有没有办法通过代码确定元素是可选的还是必需的? 根据输入值,我可能需要或不需要一些元素。 例如:一些非常快速的笨重大纲代码,让您了解我的意思:
XMLElement xmlElement = ....;
InputValue inputValue = ....;
if(xmlElement.isRequired && inputValue.isNull()) {
//keep empty xmlElement
} else if(xmlElement.isRequired && ! inputValue.isNull()) {
xmlElement.setInputValueAttribute(inputValue.toString());
} else if(!xmlElement.isRequired && inputValue.isNull()) {
// don't use the empty xmlElement
} else if(!xmlElement.isRequired && ! inputValue.isNull()) {
xmlElement.setInputValueAttribute(inputValue.toString());
}
也许我正在以错误的方式看待这个?
答案 0 :(得分:0)
好的,好像我们似乎无法(或者至少我无法解决这个问题!JAXB专家请随意回答:))。
我实际意识到,因为我已经知道哪些元素是强制的,哪些不是(由XSD手动),我基本上只是在生成XML类代码的代码中添加了一个Helper方法。在创建可选标记时调用此Helper,并仅检查null / empty inputValues,并相应地添加元素/属性。
E.g。
createXMLElement(value, type, listOfElements);
private void createXMLElement(InputValue value, XMLElementType type, List<XMLElement> listOfElements) {
XMLElement result = null;
if (null != value && !value.isEmpty()) {
result = new XMLElement();
// populate the atts etc
listOfElements.add(result);
}
}
这个问题是手动干扰,我本来希望自动化。嗯,我想第一个版本很好。 :) 此外,它仅限于单个元素类型(在此示例中为XMLElement)。