Я пытаюсь научиться импортировать из XML в JTable. Я анализирую следующий код в попытке понять, что происходит. Проблема в том, что я не могу понять, почему я не вижу никаких значений в JTable. Я уверен, что XML анализируется с помощью DOMBuilder и т. Д. Я включил код и файл XML, который я использую.
Спасибо заранее! Постскриптум Поместите файл person.xml в папку проекта.
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class XMLInJTable extends AbstractTableModel {
Vector data;
Vector columns;
public XMLInJTable() {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("person.xml");
NodeList nl = doc.getElementsByTagName("Name");
NodeList n2 = doc.getElementsByTagName("Address");
NodeList n3 = doc.getElementsByTagName("ContactNo");
NodeList listOfPersons = doc.getElementsByTagName("person");
String data1 = "", data2 = "", data3 = "";
data = new Vector();
columns = new Vector();
for (int i = 0; i < listOfPersons.getLength(); i++) {
data1 = nl.item(i).getFirstChild().getNodeValue();
data2 = n2.item(i).getFirstChild().getNodeValue();
data3 = n3.item(i).getFirstChild().getNodeValue();
String line = data1 + " " + data2 + " " + data3;
StringTokenizer st2 = new StringTokenizer(line, " ");
while (st2.hasMoreTokens())
data.addElement(st2.nextToken());
}
columns.add("");
columns.add("");
columns.add("");
} catch (Exception e) {
e.printStackTrace();
}
}
public int getRowCount() {
return data.size() / getColumnCount();
}
public int getColumnCount() {
return columns.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
return (String) data.elementAt((rowIndex * getColumnCount())
+ columnIndex);
}
public static void main(String argv[]) throws Exception {
XMLInJTable t = new XMLInJTable();
JTable table = new JTable();
table.setModel(t);
JScrollPane scrollpane = new JScrollPane(table);
JPanel panel = new JPanel();
panel.add(scrollpane);
JFrame frame = new JFrame();
frame.add(panel, "Center");
frame.pack();
frame.setVisible(true);
}
}
person.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Person>
<Name>Angelina</Name>
<Address>Dehi</Address>
<ContactNo>111111</ContactNo>
<Name>Martina</Name>
<Address>Mumbai</Address>
<ContactNo>222222</ContactNo>
</Person>
Редактировать * Мне удалось заставить его работать, потому что строка:
NodeList listOfPersons = doc.getElementsByTagName("person");
содержал маленькую букву p для «лиц», если бы она была заглавной P. Теперь мне удалось отобразить одну строку значений для Анджелины, но не для Мартины. Нужно понять это сейчас с помощью очень благодарной помощи, спасибо =)