1

XSD から作成された JAXB クラスを使用して、次の XML を作成しました。それらを使用して XML を解析したいと考えています。XML 要素ScreensDBSessionおよびCLISessionはオプションであり、任意の順序で使用できます。

<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それらのハンドルを取得して、クラスで必要なメソッドを呼び出すことができません。これらの Java ファイルのメソッドにアクセスするには、このコードをどのように編集すればよいですか?DBSessionScreensScreenType.javaCLISissionType.javaDBSessionType.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、上記のコードのからの出力です。

com.q1labs.qa.xmlgenerator.model.generatedxmlclasses.ScreensType@1a8b2725
com.q1labs.qa.xmlgenerator.model.generatedxmlclasses.DBSessionType@25b6fbc0
com.q1labs.qa.xmlgenerator.model.generatedxmlclasses.CLISessionType@104a0d98
com.q1labs.qa.xmlgenerator.model.generatedxmlclasses.ScreensType@6dc27e82
4

1 に答える 1