我有一个 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”中的附加值一起使用 但我仍然不知道如何从我的 XML 文件中提取所有实体
最佳答案
为此你需要两件事:
合适的 XML parser .
A custom table model ,图文并茂here .
根据选择的解析器,您可以
构造一个 Java 数据结构,例如
List<Entity>
, 可以在TableModel
中访问.直接访问文档对象模型满足
TableModel
契约(Contract)getValueAt()
,getRowCount()
等
附录:基于您的 edit ,
关于java - 在 jTable 中设置 XML 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27014038/