Я работаю над проектом JAVA, где сторонний поставщик предоставил строгий XSD.XSD содержит следующие конструкции:
<sequence>
<element name="element1" type="type1" nillable="true" minOccurs="0"/>
<element name="element2" type="type2" nillable="true" minOccurs="0"/>
<element name="element3" type="type3" nillable="true" minOccurs="0"/>
</sequence>
Элементы должны быть в этом порядке в соответствии с XSD.Но все элементы не являются обязательными, поэтому они могут отсутствовать в сообщении.Список здесь упрощен и на самом деле намного длиннее.
Какой подход я должен использовать, если я хочу проверить, присутствует ли element3 во входящем сообщении и если он отсутствует, вставьте его в правильную позицию в сообщении,Я должен учитывать отсутствие всех предшествующих элементов, поэтому я не могу полагаться на присутствие element2, например, и вставить тег позади него.Например:
<parent>
<element2/>
</parent>
Должно стать
<parent>
<element2/>
<element3/>
</parent>
Единственное решение, которое у меня есть, - это сложное решение, в котором я должен искать наличие всех элементов, предшествующих элементу 3 (начиная с ближайшего).Если предыдущий элемент найден, я вставляю за ним.Если ничего не найдено, я вставляю в родителя.Мне нужно где-то хранить предыдущие элементы (config или hardcoded).Это не кажется элегантным решением.
Каков наилучший способ сделать это в Java?Либо в коде, либо с использованием XSLT.