Я создал следующий XML, используя классы JAXB, созданные из XSD. Теперь я хочу использовать их для анализа XML. Элементы XML Screens
, DBSession
и CLISession
являются необязательными и могут быть использованы в любом порядке.Анализ XML с использованием JAXB
<Test>
<Screens>
<Screen attr1="qw" attr2="ds" attr3="sdf"></Screen>
</Screens>
<DBSession attr1="sd" attr2="sdf" attr3="sdf"></DBSession>
<CLISession attr1="sdf"></CLISession>
<Screens>
<Screen attr1="qdw" attr2="dss" attr3="a"></Screen>
</Screens>
</Test>
У меня есть класс в файле Test.java
, который содержит следующий метод:
public List<Object> getCLISessionOrDBSessionOrScreens() {
if (cliSessionOrDBSessionOrScreens == null) {
cliSessionOrDBSessionOrScreens = new ArrayList<Object>();
}
return this.cliSessionOrDBSessionOrScreens;
}
У меня есть следующие классы Java, который содержит методы для получения значений атрибутов.
ScreenType.java
CLISissionType.java
DBSessionType.java
Используя приведенный ниже код я пытаюсь разобрать XML и я в состоянии идентифицировать элементы cliSession
, DBSession
и Screens
и их порядок, но я не могу получить ручку на им, чтобы вызвать необходимые методы классы ScreenType.java
, CLISissionType.java
, DBSessionType.java
. Как отредактировать этот код для доступа к методам в этих файлах Java?
JAXBContext jaxbContext = JAXBContext.newInstance("com.qa.xmlgenerator.model.generatedxmlclasses");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xml);
JAXBElement<?> test = (JAXBElement<?>) unmarshaller.unmarshal(reader);
Test testInfo = (Test) test.getValue();
int numComponents = testInfo.getCLISessionOrDBSessionOrScreens().size();
for(int i= 0; i<numComponents; i++){
System.out.println(testInfo.getCLISessionOrDBSessionOrScreens().get(i));
}
Это выход из System.out.println
в приведенном выше коде:
c[email protected]1a8b2725
com[email protected]25b6fbc0
com.[email protected]104a0d98
c[email protected]6dc27e82