1
我使用從XSD創建的JAXB類創建了以下XML。我現在想用它們來解析XML。 XML元素Screens
,DBSession
和CLISession
是可選的並且可以以任何順序使用。使用JAXB解析XML
<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