2

これは長くなるでしょうが、私はいくつかの啓蒙が必要です。私はJAXBを初めて使用するので、寛大になってください。

CourseApp:

package Courses;

import java.io.File;
import java.util.ArrayList;

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

public class CoursesApp {
    public static void main(String[] args) {
            Courselist courselist = new Courselist();
            courselist.setclassType("Lecture");
            courselist.setcourseCode("2002");
            courselist.setgroupIndex("1");
            courselist.setprofessor("Professor James");
        try{
            File file = new File("C:\\Courselist.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(Courselist.class);
            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            jaxbMarshaller.marshal(courselist, file);
            jaxbMarshaller.marshal(courselist, System.out);

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

コースリスト:

package Courses;

import java.util.List;

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

@XmlRootElement
public class Courselist {

    String courseCode;
    String classType;
    String groupIndex;
    String professor;

    public String getcourseCode() {
        return courseCode;
    }

    @XmlElement
    public void setcourseCode(String courseCode) {
        this.courseCode = courseCode;
    }

    public String getclassType() {
        return classType;
    }

    @XmlElement
    public void setclassType(String classType) {
        this.classType = classType;
    }

    public String getgroupIndex() {
        return groupIndex;
    }

    @XmlElement
    public void setgroupIndex(String groupIndex) {
        this.groupIndex = groupIndex;
    }

    public String getprofessor() {
        return professor;
    }

    @XmlElement
    public void setprofessor(String professor) {
        this.professor = professor;
    }
}

出力:

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
- <courselist>
  <classType>Lecture</classType> 
  <courseCode>2002</courseCode> 
  <groupIndex>1</groupIndex> 
  <professor>Professor James</professor> 
  </courselist>

私が欲しいのは、同じXML内にコースリストの別のインスタンスを作成することです。

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
- <courselist>
  -<course>
     <classType>Lecture</classType> 
     <courseCode>2002</courseCode> 
     <groupIndex>1</groupIndex> 
     <professor>Professor James</professor>
   </course>
  -<course>
     <classType>Lecture</classType> 
     <courseCode>2003</courseCode> 
     <groupIndex>2</groupIndex> 
     <professor>Professor John</professor> 
   </course>
  </courselist>
4

2 に答える 2

2

CourseList に 1 つのメンバーを含めることをお勧めList<Course>CourseますCourseList
これはコードです:

@XmlRootElement
public class Courselist {
    @XmlElement List<Course> course = new ArrayList<Course>();
}
于 2012-11-10T21:19:51.983 に答える
0

コースリスト

oshai が答えたように、私は 2 つのクラスCourselistCourse. 以下は、Courselistクラスがどのように見えるかです。Java プログラミングの規則に合わせるために、パッケージ名は通常小文字です。また、ドメイン名 ( など) に基づいていることもよくありますcom.example.courses。デフォルトでは、 JAXB (JSR-222)get実装はプロパティ (またはsetメソッド)のメタデータを探すので、そこに配置しました (参照: http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to .html )。

package courses;

import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Courselist {

    List<Course> courses;

    @XmlElement(name="course")
    public List<Course> getCourses() {
        return courses;
    }

    public void setCourses(List<Course> courses) {
        this.courses = courses;
    }

}

コース

クラスであなたが持っていた情報はCourselist、新しいCourseクラスに移動しました。JAXB は例外による構成であるため、XML 表現をデフォルトとは異なるものにしたい場合にのみアノテーションを追加する必要があります。あなたのユースケースでは、このクラスに注釈は必要ありません (参照: http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html )。通常の Java コーディング規約に合わせて、プロパティ メソッドの大文字と小文字を修正しました。

package courses;

public class Course {

    String courseCode;
    String classType;
    String groupIndex;
    String professor;

    public String getCourseCode() {
        return courseCode;
    }

    public void setCourseCode(String courseCode) {
        this.courseCode = courseCode;
    }

    public String getClassType() {
        return classType;
    }

    public void setClassType(String classType) {
        this.classType = classType;
    }

    public String getGroupIndex() {
        return groupIndex;
    }

    public void setGroupIndex(String groupIndex) {
        this.groupIndex = groupIndex;
    }

    public String getProfessor() {
        return professor;
    }

    public void setProfessor(String professor) {
        this.professor = professor;
    }

}
于 2012-11-10T23:22:42.877 に答える