импорт xml в бд на java

279
19 мая 2017, 14:06

Нужно произвести импорт записей из файла xml, все импортируется хорошо, но только первая запись, а нужно что бы все. вот код импорта:

 Statement statement = null;
    Schema schema = null;
    try {
        statement = connection.createStatement();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    Scanner scanner = new Scanner(System.in);
    System.out.println("Скопируйте файл в директорию, где находится программа" +
            "\n Введите имя файла xml соответствующего для импорта в таблицу Автомобили");
    String string = scanner.nextLine();
    String FILENAME = string + ".xml";
    try {
        final File xmlFile = new File(System.getProperty("user.dir")
                + File.separator + FILENAME);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(xmlFile);
        doc.getDocumentElement().normalize();
        try {
            SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
            schema = factory.newSchema(new File("xsd\\Auto.xsd"));
            Validator validator = schema.newValidator();
            validator.validate(new DOMSource(doc));

            System.out.println("Файл xml соответствует схемы данной таблицы");
        } catch (Exception e) {
            System.out.println("Файл xml не соответствует  xsd схеме данной таблицы");
            return;
            //   e.printStackTrace();
        }
        NodeList nodeList = doc.getElementsByTagName("Auto");

        for (int i = 0; i < nodeList.getLength(); i++) {
            Node node = nodeList.item(i);

            if (Node.ELEMENT_NODE == node.getNodeType()) {
                Element element = (Element) node;
                String Model = element.getElementsByTagName("Model").item(0).getTextContent();
                String Data_vipuska = element.getElementsByTagName("Data_vipuska").item(0).getTextContent();
                String Color = element.getElementsByTagName("Color").item(0).getTextContent();
                String Probeg = element.getElementsByTagName("Probeg").item(0).getTextContent();
                String Price = element.getElementsByTagName("Price").item(0).getTextContent();
                statement.execute("INSERT INTO 'Auto'('Model','Data_vipuska','Color','Probeg','Price')" +
                        " VALUES ('" + Model + "','" + Data_vipuska + "','" +
                        Color + "','" + Probeg + "','" + Price + "'); ");
                System.out.println("Данные импортированы в таблицу");
            }

Вот пример xml:

 <Auto>
  <auto>
   <id_auto>1</id_auto>
   <Model>lalaz</Model>
   <Data_vipuska>2017</Data_vipuska>
   <Color>red</Color>
   <Probeg>100</Probeg>
   <Price>200</Price>
   </auto>
  <auto>
    <id_auto>1</id_auto>
    <Model>maz</Model>
    <Data_vipuska>2001</Data_vipuska>
    <Color>red</Color>
    <Probeg>100000</Probeg>
    <Price>1</Price>
  </auto>
</Auto>
Answer 1

Так как xml учитывает регистр, то эта строчка

NodeList nodeList = doc.getElementsByTagName("Auto");

возвращает список из 1 элемента.

Вам надо использовать название узла в правильном регистре

NodeList nodeList = doc.getElementsByTagName("auto");

Вот этот код

NodeList nodeList = doc.getElementsByTagName("auto");
for (int i = 0; i < nodeList.getLength(); i++) {
    Node node = nodeList.item(i);
    if (Node.ELEMENT_NODE == node.getNodeType()) {
        Element element = (Element) node;
        String Model = element.getElementsByTagName("Model").item(0).getTextContent();
        String Data_vipuska = element.getElementsByTagName("Data_vipuska").item(0).getTextContent();
        String Color = element.getElementsByTagName("Color").item(0).getTextContent();
        String Probeg = element.getElementsByTagName("Probeg").item(0).getTextContent();
        String Price = element.getElementsByTagName("Price").item(0).getTextContent();
        System.out.println("INSERT INTO 'Auto'('Model','Data_vipuska','Color','Probeg','Price')" +
                " VALUES ('" + Model + "','" + Data_vipuska + "','" +
                Color + "','" + Probeg + "','" + Price + "'); ");
    }
}

Выдает вот такой результат

INSERT INTO 'Auto'('Model','Data_vipuska','Color','Probeg','Price') VALUES ('lalaz','2017','red','100','200'); 
INSERT INTO 'Auto'('Model','Data_vipuska','Color','Probeg','Price') VALUES ('maz','2001','red','100000','1'); 
READ ALSO
Не видно созданной папки в диспетчере файлов

Не видно созданной папки в диспетчере файлов

Предполагаю что дело в кешеПри сохранении изображения с создаю папку Folder и сохраняю туда картинку

239
Связывание элементов

Связывание элементов

В интерфейсе среды NetBeans есть три элемента: кнопка JButton, поле jTextField и JListСкажите пожалуйста как правильно их вместе связать

196
Подсветку края бокового меню (android)

Подсветку края бокового меню (android)

Хочеться сделать подсветку края бокового меню, как в EBookDroidПожалуйста, подскажите, каким спосом реализован данный эффект?

204
Отображение кода в Android приложении

Отображение кода в Android приложении

Мне нужно отобразить определённые блоки (отрывки) кода в Android приложении

268