首页 > 解决方案 > 使用 DOM 将 JTable 数据写入带有适当元素标签的 XML

问题描述

我想使用 DOM 解析器将我的 JTable 数据写入 XML 文件。我正在尝试创建 JTable 列的元素标记,这与此处将列名视为 TextNode 不同。
这是我尝试过的:

  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();
   }

另外,我需要为此创建 getter 和 setter 吗?为什么使用它们?

标签: domparserxmldom

解决方案


推荐阅读