Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 4
Регистрация: 25.05.2013
Сообщений: 157

Ввод данных в таблицу из xml

08.06.2013, 10:10. Показов 1577. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно заполнить таблицу данными из xml, вывод сделал, с вводом что-то не выходит, не нашёл понятный пример.
Так вывожу данные:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package controller;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.List;
 
import javax.swing.JFileChooser;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
 
import model.TableModel;
import view.MainFrame;
 
class SaveEvent implements ActionListener {
 static final long serialVersionUID = 1L;
 
    private MainFrame frame;
    private TableModel model;
    private File file;
    
    public SaveEvent(MainFrame frame){
        this.frame = frame;
    }
    
    public void actionPerformed(ActionEvent event)
    {
        this.model = this.frame.getTablePanel().getTableModel();
        try{
            DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = f.newDocumentBuilder();
            
            JFileChooser fileChooser = new JFileChooser();
            ProjectFileFilter xmlFilter = new  ProjectFileFilter(".xml");
            
            fileChooser.setCurrentDirectory(new File("."));
            fileChooser.setAcceptAllFileFilterUsed(false);
            fileChooser.addChoosableFileFilter(xmlFilter);
            
            int result = fileChooser.showSaveDialog(null);
            
            if(result == JFileChooser.APPROVE_OPTION){  
                String fileName = fileChooser.getSelectedFile().getAbsolutePath();
                
                if (fileChooser.getFileFilter() == xmlFilter)
                    file = new File(fileName + ".xml");
                else
                    file = new File(fileName);
            
                if (!file.exists())
                    file.createNewFile();
            
                Document doc = builder.newDocument();
                Element tableEl = doc.createElement("students");
                doc.appendChild(tableEl);
                
                List<String> columns = this.frame.getTablePanel().getTableModel().getColumns();
                for (int rowInd = 0; rowInd < model.getRowCount(); rowInd++){
                    Element rowEl = doc.createElement("student");
                    tableEl.appendChild(rowEl);
                
                    for (int columnInd = 0; columnInd < columns.size(); columnInd++){;
                        String header = columns.get(columnInd);
                        String value = model.getValueAt(rowInd, columnInd).toString();
                        Element cellEl = doc.createElement("cell");
                        Attr colAttr = doc.createAttribute("colName");
                        cellEl.setAttributeNode(colAttr);
                        rowEl.appendChild(cellEl);
                        colAttr.appendChild(doc.createTextNode(header));
                        cellEl.appendChild(doc.createTextNode(value));
                    }
                }
                TransformerFactory tFactory = TransformerFactory.newInstance();
                Transformer transformer = tFactory.newTransformer();
                DOMSource source = new DOMSource(doc);
                StreamResult resultStream = new StreamResult(file);
                transformer.transform(source, resultStream);
            }
        }
        catch(Exception exception){
            exception.printStackTrace();
        }
    }
}


Открытие файла и занесение данных в таблицу:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package controller;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
 
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
 
import org.xml.sax.SAXException;
 
import model.Student;
 
import view.MainFrame;
 
class OpenEvent implements ActionListener {
    String fileName;
    MainFrame frame;
    
    public OpenEvent(MainFrame frame){
        this.frame = frame;
    }
    
    public void actionPerformed(ActionEvent event)
    {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser parser;
        JFileChooser file = new  JFileChooser();
        ProjectFileFilter xmlFilter = new  ProjectFileFilter(".xml");
        file.addChoosableFileFilter(xmlFilter);
        file.setCurrentDirectory(new File("."));
        file.setAcceptAllFileFilterUsed(false);
        
        int  result = file.showOpenDialog(null);
            if(result == JFileChooser.APPROVE_OPTION)
            {
                try
                {
                    parser = factory.newSAXParser();
                    XMLRead saxp = new XMLRead();
                    fileName = file.getSelectedFile().getAbsolutePath();
                    File inputFile = new  File(fileName);                
                    parser.parse(inputFile, saxp);
                    List<Student> students = saxp.getStudents();
                    for(Student student: students){
                        frame.getTablePanel().getTableModel().getStudents().add(student);
                        frame.getTablePanel().getTableModel().refresh();
                    }
                }
                catch (ParserConfigurationException e1) {
                    e1.printStackTrace();
                } 
                catch (SAXException e1) {   
                    e1.printStackTrace();
                }
                catch (FileNotFoundException ex){
                    JOptionPane.showMessageDialog(frame, "Такого файла не существует");
                }
                catch (IOException ex){
                    JOptionPane.showMessageDialog(frame, "Исключение ввода-вывода");
                } 
                catch (Exception ex){
                    JOptionPane.showMessageDialog(frame, "Ошибка");
                }    
          }
            frame.getTablePanel().refreshButtonPanel();
            frame.getTablePanel().getTableModel().refresh();
    }
}


Обработчик файла xml, шляпошный\
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package controller;
 
import java.util.ArrayList;
import java.util.List;
 
import model.Student;
 
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
 
public class XMLRead extends DefaultHandler{
 
    private List<Student> students;
    private Student student;
    private String thisElement = "";
    
    public Student getResult(){
      return student;
    }
    
    @Override
    public void startDocument() throws SAXException {
        students = new ArrayList<Student>();
    }
    
    @Override
    public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
      thisElement = qName; 
      if (thisElement.equals("student")){
          student = new Student();
      }
    }
    
    @Override
    public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
        thisElement = qName; 
         if (thisElement.equals("student")){
             students.add(student);
         }
    }
    
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
      if (thisElement.equals("cell colName=\"ФИО\"")) {
         student.setFio(new String(ch,start,length));
      }
      if (thisElement.equals("cell colName=\"№ группы\"")) {
         student.setGroupNumber(new Integer(new String(ch,start,length)));
      }
    }
    
    @Override
    public void endDocument(){
    }
    
    public List<Student> getStudents() {
        return students;
    }
}

Обработчик совсем не работает, вместо этого в таблице 10 пустых строк создаётся.
Получаем на выводе:
Кликните здесь для просмотра всего текста
XML
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><students><student><cell colName="ФИО">Гирилюк Павел Александрович</cell><cell colName="№ группы">121701</cell><cell colName="Русский язык">4</cell><cell colName="Литература">7</cell><cell colName="МОИС">7</cell><cell colName="ППвИС">7</cell><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО">Ололош Ололо Ололошенько</cell><cell colName="№ группы">121701</cell><cell colName="Русский язык"/><cell colName="Литература">3</cell><cell colName="МОИС">10</cell><cell colName="ППвИС">9</cell><cell colName="Математика"/><cell colName="Информатика">2</cell></student><student><cell colName="ФИО">Гирилюк Александр Александрович</cell><cell colName="№ группы">121702</cell><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика">9</cell><cell colName="Информатика">7</cell></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student><student><cell colName="ФИО"/><cell colName="№ группы"/><cell colName="Русский язык"/><cell colName="Литература"/><cell colName="МОИС"/><cell colName="ППвИС"/><cell colName="Математика"/><cell colName="Информатика"/></student></students>
Миниатюры
Ввод данных в таблицу из xml  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2013, 10:10
Ответы с готовыми решениями:

Jawa.swing.InputVerifier - Поставить ограничение на ввод данных при добавлении в таблицу
Помогите пожалуйста, в Swing не очень шарю и никак не могу разобраться с java.swing.InputVerifier. Сама программа почти готова, но мне...

Ввод данных в таблицу
Как ввести данные в подключённую к ADOTable таблицу не используя DBEdit

Ввод данных в таблицу
Добрый день. Задача: создать таблицу из двух рядков, в каждом из которых по 4 ячейки информации, информация вводиться пользователем в двух...

1
2 / 2 / 4
Регистрация: 25.05.2013
Сообщений: 157
09.06.2013, 14:24  [ТС]
работа с xml от ibm Описаны различные способы и их качества.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2013, 14:24
Помогаю со студенческими работами здесь

Ввод данных в таблицу
Здравствуйте! Написала код для добавления записи в бд, но он не пашет. Т.е ошибок не выдает, а запись тож не добавляет procedure...

Ввод данных в таблицу
Как решить такую проблему

Ввод данных в таблицу
Ребят нужно ввести данные категории в базу данных сначала что то наворотил(передовалось только имя категории name_category id_category...

Постройте график функции. Таблицу данных получить, изменяя параметр X с шагом h. Ввод исходных данных организовать через окнаTEdit
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

Запись данных из XML в таблицу
Всем Привет!!! Есть такая задача надо записать данный из XML в таблицу. Из интернета нашел пример declare x varchar2(4000) :=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru