Установить значения XML в jTable

1

У меня есть jTable, и теперь я хочу добавить в него содержимое XML файла. Я не знаю, как я должен просматривать XML файл, в настоящее время я могу манипулировать данными (переписывать, удалять) и получать значения одного тега, а не всего. Я использую JDOM

мой XML файл выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<app>
  <!-- Pfad für Templates und speicher ort für die Entity.java-->
  <Entity>
    <Name>Aposting</Name>
    <Art>0</Art>
    <Datum>Wed Nov 19 10:51:10 CET 2014</Datum>
  </Entity>

  <Entity>
    <Name>Aposting</Name>
    <Art>1</Art>
    <Datum>Wed Nov 19 11:30:34 CET 2014</Datum>
  </Entity>

  <Entity>
    <Name>Aposting</Name>
    <Art>1</Art>
    <Datum>Wed Nov 19 15:21:12 CET 2014</Datum>
  </Entity>

  <Entity>
    <Name>Aposting</Name>
    <Art>2</Art>
    <Datum>Thu Nov 20 8:01:10 CET 2014</Datum>
  </Entity>

</app>

И я хочу показать его в таблице следующим образом:

Изображение 174551

спасибо за помощь

Редактировать:

я сделал пользовательскую модель

package TableTest;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;

/**
 *
 * @author Administrator
 */
public class ModelData implements TableModel {

    List<TableData> data = new ArrayList<>();
    String colNames[] = {"Name", "Type", "Date"};
    Class<?> colClasses[] = {String.class, String.class, Date.class};

    ModelData() {
        data.add(new TableData("Aposting", "Created", new Date()));
        data.add(new TableData("Aposting", "Edited", new Date()));
        data.add(new TableData("Aposting", "Edited", new Date()));
        data.add(new TableData("Aposting", "Deleted", new Date()));
    }

    @Override
    public int getRowCount() {
        return data.size();
    }

    @Override
    public int getColumnCount() {
        return colNames.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {
            return data.get(rowIndex).getName();
        }
        if (columnIndex == 1) {
            return data.get(rowIndex).getType();
        }
        if (columnIndex == 2) {
            return data.get(rowIndex).getDate();
        }
        return null;
    }

    @Override
    public String getColumnName(int columnIndex) {
        return colNames[columnIndex];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return colClasses[columnIndex];
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return true;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

        if (columnIndex == 0) {
            data.get(rowIndex).setName((String) aValue);
        }
        if (columnIndex == 1) {
            data.get(rowIndex).setType((String) aValue);
        }
        if (columnIndex == 2) {
            data.get(rowIndex).setDate((Date) aValue);
        }
    }

    @Override
    public void addTableModelListener(TableModelListener l) {

    }

    @Override
    public void removeTableModelListener(TableModelListener l) {

    }
}

и класс TableData, доступ к которому:

package TableTest;

import java.util.Date;

public class TableData {

    String name;
    String type;
    Date date;

    public TableData(String name, String type, Date date) {
        super();
        this.name = name;
        this.type = type;
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

}

и он работает с добавленными значениями в "ModelData", но я до сих пор не понял, как я могу извлечь все Entities из моего XML файла

Теги:
swing
tablemodel

1 ответ

6
Лучший ответ

Для этого вам понадобятся две вещи:

В зависимости от выбранного парсера вы можете либо

  • TableModel структуру данных Java, например List<Entity>, к которой можно получить доступ в TableModel.

  • Доступ к объектной модели документа непосредственно для удовлетворения TableModel контракта на getValueAt(), getRowCount() и т.д.

Добавление: Основываясь на вашем редактировании,

  • Пока вы оцениваете другие параметры синтаксического анализа, начинайте с простого SAXParser, проиллюстрированного здесь. В примере создается List<School>; вы List<TableData>.

  • В своей модели пользовательских таблиц расширьте AbstractTableModel чтобы получить описанную здесь обработку событий.

  • 0
    большое спасибо ^^
  • 0
    Добро пожаловать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню