У меня есть 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>
И я хочу показать его в таблице следующим образом:
спасибо за помощь
Редактировать:
я сделал пользовательскую модель
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 файла
Для этого вам понадобятся две вещи:
Подходящий синтаксический анализатор XML.
Модель пользовательской таблицы, показанная здесь.
В зависимости от выбранного парсера вы можете либо
TableModel
структуру данных Java, например List<Entity>
, к которой можно получить доступ в TableModel
.
Доступ к объектной модели документа непосредственно для удовлетворения TableModel
контракта на getValueAt()
, getRowCount()
и т.д.
Добавление: Основываясь на вашем редактировании,