Я хочу записать свои данные JTable в файл XML с помощью синтаксического анализатора DOM. Я пытаюсь создать теги элементов столбцов JTable, в отличие от здесь, где имена столбцов обрабатываются как TextNodes.
Вот что я пробовал:
String[] columnNames = {"Name", "Technology"};
Object[][] rowData = {{"Raja", "Java"},{"Vineet", "Java Script"},{"Archana", "Python"},{"Krishna", "Scala"},{"Adithya", "AWS"},{"Jai", ".Net"}};
model = new DefaultTableModel(rowData, columnNames);
try {
DocumentBuilderFactory dbFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
//root Element
Element rootElement = doc.createElement("Cars");
doc.appendChild(rootElement);
for(int i=0; i<model.getRowCount();i++) {
for(int j=0; j<model.getColumnCount();j++) {
Element ele = doc.createElement(model.getColumnName(j));
ele.appendChild(doc.createTextNode((String) model.getValueAt(i, j)));
}
Element data = doc.createElement("td");
rootElement.appendChild(data);
Attr attrr = doc.createAttribute("row: ");
String stri = Integer.toString(i);
attrr.setValue(stri);
data.setAttributeNode(attrr);
}
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("D:\\cars.xml"));
transformer.transform(source, result);
// Output to console for testing
StreamResult consoleResult = new StreamResult(System.out);
transformer.transform(source, consoleResult);
} catch (Exception e) {
e.printStackTrace();
}
Кроме того, нужно ли для этого создавать геттеры и сеттеры? Почему они используются?