2

JAVAプログラミング初心者です。XMLパースでモデルクラスを作っています。JAXB、 xmapperなどの例があることは知っています。要素に反復があるxmlファイルがあります。この xml のモデル クラスを作成するには? 任意の助け..いくつかのxmlをマップしましょう:

<root a="2.2">
    <main>
      <node1>123</node1>
      <node2>123</node2>
    </main>

    <client value="1" use="true">
      <C_node1>aaa</C_node1>
      <C_node2>bbb</C_node2>
    </client>

    <client value="2" use="true">
      <C_node1>aaa</C_node1>
      <C_node2>bbb</C_node2>
    </client>

    <client value="3" use="true">
      <C_node1>aaa</C_node1>
      <C_node2>bbb</C_node2>
    </client>


    // ...
    <client value="100" use="true">
      <C_node1>aaa</C_node1>
      <C_node2>bbb</C_node2>
    </client>    

    <System>     
     <DebugFrame>0</DebugFrame>     
    </System>

</root>

http://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.htmlを見つけました。それは私が欲しいものですか?

Edited Here は実際のコードです。コンパイルエラーがあります。Javaのバージョンは

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

エラーメッセージは次のとおりです。

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Class has two properties of the same name "mode"
    this problem is related to the following location:
        at public java.lang.String xmlParserTest.RootTest.getMode()
        at xmlParserTest.RootTest
    this problem is related to the following location:
        at private java.lang.String xmlParserTest.RootTest.mode
        at xmlParserTest.RootTest
Class has two properties of the same name "inputFile"
    this problem is related to the following location:
        at public java.lang.String xmlParserTest.MainEntity.getInputFile()
        at xmlParserTest.MainEntity
        at private xmlParserTest.MainEntity xmlParserTest.RootTest.main
        at xmlParserTest.RootTest
    this problem is related to the following location:
        at private java.lang.String xmlParserTest.MainEntity.inputFile
        at xmlParserTest.MainEntity
        at private xmlParserTest.MainEntity xmlParserTest.RootTest.main
        at xmlParserTest.RootTest

: console.java

package xmlParserTest;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class console {

    public static void main(String[] args) {

       try
       {                    
          JAXBContext jc = JAXBContext.newInstance(RootTest.class);
            Unmarshaller u = jc.createUnmarshaller();

            File f = new File("Testing.xml");
            RootTest product = (RootTest) u.unmarshal(f);

            System.out.println(product.getMode());
            System.out.println(product.getMainEntity().getInputFile());
            System.out.println(product.getMainEntity().getOutputFolder());


    }catch (JAXBException e) {
       e.printStackTrace();
      } 
    }

}

: RootTest.java

package xmlParserTest;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "Function")
public class RootTest {

    private MainEntity main;
    private String mode;            

    @XmlElement(name="Main")
    public MainEntity getMainEntity() {
     return main;
    }

    public void setMainEntity(MainEntity _main) {
     this.main = _main;
    }

    @XmlAttribute(name="mode")
    public String getMode() {
     return mode;
    }

    public void setMode(String _mode) {
      this.mode = _mode;
    }       

    public RootTest()
    {   
    }
}

: MainEntity.java

package xmlParserTest;

import javax.xml.bind.annotation.XmlElement;

public class MainEntity {

    private String inputFile;   
    private String inputType;   
    private String outputFolder;    
    private String outputType;  

    @XmlElement(name="InputFile")
    public String getInputFile() {
      return inputFile;
    }

    public void setInputFile(String _inputFile) {
      this.inputFile = _inputFile;
    }       

    public String getInputType() {
      return inputType;
    }

    public void setInputType(String _type) {
      this.inputType = _type;
    }

    @XmlElement(name="OutputFolder")
    public String getOutputFolder() {
      return outputFolder;
    }

    public void setOutputFolder(String _outputFolder) {
      this.outputFolder = _outputFolder;
    }   

    public String getOutputType() {
      return outputType;
    }

    public void setOutputType(String _type) {
      this.outputType = _type;
    }

    public MainEntity()
    {
    }   
}

: Testing.xml

<?xml version="1.0" encoding="UTF-8"?>
<Function mode="Execute">
  <Main>
    <InputFile type="string">C:\DATA\test.txt</InputFile>
    <OutputFolder type="string">C:\Test</OutputFolder>
  </Main>
</Function>
4

2 に答える 2