2015-10-01 3 views
1

Я пытаюсь сделать этот код более динамичным, не добавляя нового ученика и записывая Element eltFirstName = new Element("FirstName"); и lastname несколько раз, так или иначе, чтобы достичь цикла for без использования sax.Создание динамических JDOM для добавления новых элементов

public class javaForm extends HttpServlet { 

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

     Element eltRoot = new Element("Students"); 

     Element eltStudent = new Element("Student"); 
     Element eltFirstName = new Element("FirstName"); 
     eltFirstName.addContent("Mike"); 
     Element eltLastName = new Element("LastName"); 
     eltLastName.addContent("dan"); 

     eltStudent.addContent(eltFirstName); 
     eltStudent.addContent(eltLastName); 

     eltRoot.addContent(eltStudent); 

     Document doc = new Document(eltRoot); 
     XMLOutputter outputter = new XMLOutputter(); 
     String xml = outputter.outputString(doc); 
     resp.setContentType("application/xml"); 
     resp.getWriter().println(xml); 

    } 
} 

ответ

0

Я бы порекомендовал вам построить студенческий объект:

public class Student{ 

String firstName; 
String lastName; 

public Student(String firstName, String lastName){ 
this.firstName = firstName; 
this.lastName = lastName; 
} 
public String getFirstName(){ 
return firstName; 
} 
public String getLastName(){ 
return lastName; 
} 
} 

После этого я бы сделать StudentWritter class Wich создает список с Student objects и печатает их:

class StudentWritter{ 

List<Student> listOfStudents; 

public StudentWritter(){ 
    getAllStudents(); 
} 

public List<Student> getAllStudents(){ 

    ArrayList<Student> listOfStudents= new ArrayList<>(); 
    while(thereAreStudents){ // I dont know were you get them from :P 
    Student aStudent = new Student(firstName, lastName); //makes a Student object 
    listOfStudents.add(aStudent); // adds a Student to the List 
    } 
    this.listOfStudents = listOfStudents; 
} 

//afterwards initialise your outputer and print the list :D 
public void printStudents(HttpServletResponse resp){ 
    Document doc = new Document("Students"); //creates a document "Students" 
    XMLOutputter outputter = new XMLOutputter(); 
    resp.setContentType("application/xml"); 

    for(Student aStudent : listOfStudents){ 
     String outputString = aStudent.getFirstName() + " " + aStudent.getLastName() 
     resp.getWriter().println(outputString); 
    } 
} 

Если вы теперь инициализируйте свой StudentWritter class все ваши ученики будут сохранены в ArrayList<Student>, потому что метод getAllStudents() находится в constructor от class. Это означает, что если вы хотите, чтобы напечатать все студенты в StudentWritter class создании экземпляра и решить printStudents() метод:

StudentWritter studentWritter = new StudentWritter(); //you will have to change to constructor to your needs 
studentwritter.printStudents(); 

Im извините за все опечатки, Iam работает без IDE прямо сейчас, и был бы признателен редактор.

Смежные вопросы