У меня есть сторонний XML для анализа в следующей форме. Количество тестов неограничено, но всегда целое число.Анализ XML с именами структурированных элементов
<tests>
<test_1>
<foo bar="baz" />
</test_1>
<test_2>
<foo bar="baz" />
</test_2>
<test_3>
<foo bar="baz" />
</test_3>
</tests>
В настоящее время я разбираю это с помощью XPath, но это очень много возиться. Есть ли способ выразить этот стиль XML в схеме XSD и генерировать классы JAXB из него.
Насколько я вижу, это невозможно, единственное, что возможно, это техника <xs:any processContents="lax"/>
от how can I define an xsd file that allows unknown (wildcard) elements? , однако это позволяет использовать любой контент, а не только <test_<integer>
. Я просто хочу подтвердить, что я не пропустил трюк XSD/JAXB?
Примечание. Я бы предпочел, чтобы XML был структурирован таким образом. Я могу попытаться убедить третью сторону изменить.
<tests>
<test id="1">
<foo bar="baz" />
</test>
<test id="2">
<foo bar="baz" />
</test>
<test id="3">
<foo bar="baz" />
</test>
</tests>
XSD сосредоточены вокруг фиксированного набора элементов/типов. JAXB просто создает классы из них. Как определить число различных элементов с помощью схемы именования «test_xxx»? --- Однако я вижу альтернативу: сначала используйте XSLT, чтобы изменить входящий XML с этими элементами на тот, который соответствует вашим потребностям, и использует схему именования '. Для этого вы можете легко написать XSD и сгенерировать классы JAXB. –
Seelenvirtuose