Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- importjava.sql.*;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.OutputKeys;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerException;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import javax.xml.transform.stream.StreamSource;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.StringWriter;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.util.Properties;
- /**
- * Created by Кристина on 20.05.2018.
- */
- public class XmlSqlTest {
- Connection connection = null;
- int n;
- private static String 1xml = "C:\\1.xml";
- private static String 2xml = "C:\\2.xml";
- private static String 2xsl = "C:\\2.xsl";
- private void connectbd(){ //создаем метод для установки соединения с sql сервером, в этом же методе транкейтим таблицу sql если там уже есть записи
- String url = "jdbc:sqlserver://localhost:1433;databaseName=iatems";
- String login = "sa";
- String password = "7777";
- Statement statement = null; //
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- connection = DriverManager.getConnection(url, login, password);
- statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery("SELECT FIELD FROM TEST");
- if (resultSet.next()) {
- statement.executeUpdate("TRUNCATE TABLE TEST ");
- } else{
- statement.executeUpdate("CREATE TABLE TEST (field INT)");
- }
- if(statement != null)
- statement.close();
- }
- catch (Exception e){
- e.printStackTrace();
- }}
- public Connection getConnection() {
- return connection;
- }
- public void setN(int n){ // сеттер для инициализации n, передачи значения в n
- this. n = n;
- }
- public void insertSqlTable()throws SQLException { // метод для заполненя поля field таблицы sql циклом с ограничением по числу n раз заполненения строк
- PreparedStatement preparedStatement = null;
- preparedStatement = connection.prepareStatement(
- "INSERT INTO TABLE TEST (FIELD) VALUES (?)");
- for (int i = 1; i<= n;i++){
- preparedStatement.setInt(1,i);
- }
- }
- public String xmlOne()throws IOException { // создаем документ xml , строим теги в нужном порядке, заполняем тег field значениями из заполненного столбца FIELD sql
- DocumentBuilderFactory factory = DocumentBilderFactory.newInstanc();
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document document = builder.newDocument();
- Element root = document.createElement("entries ") ;
- document.appeadChild(root);
- Statement statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery("SELECT FIELD FROM TEST");
- while(resultSet.next){
- //читаем элементы таблицы и записываем в нужные теги
- Element entry = document.createElement("entry");
- Element field = document.createElement("field");
- field.setTextContent(resultSet.getString(FIELD));
- root.appendChild(entry);
- entry.appendChild(field);
- } resultSet.close();
- statement.close();
- String formatXml1 = formatXml (document,1xml);
- return formatXml1;
- }
- private String formatXml (Node root, String fileName) throws TransformerException { \\преобразование xml в строки с форматированием
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); \\ добавляем пробелы
- DOMSource sourse = new DOMSource(root);
- StreamResult result= new StreamResult(new File(fileName)));
- transformer. Transform (sourse, result);
- System.out.println("1.xml создан”);
- return result.toString();
- }
- public Path xmlTwo() throws TransformerException, IOException { \\ создание файла xml 2 на основании талицы стилей .xsl
- Path path1 = Paths.get(1xml);
- Path path2 = Paths.get(2xml);
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer(new StreamSource("2xsl"));
- StreamSource in = new StreamSource(path1.toFile());
- StreamResult out = new StreamResult(path2.toFile());
- transformer.transform(in, out);
- System.out.println("2.xml создан на основании таблицы стилей 2xsl ”);
- return path2;
- }
- public int parseXml(Path path) throws IOException, SAXException,
- ParserConfigurationException {
- long sum = 0;
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = factory.newDocumentBuilder();
- Document doc = docBuilder.parse(path.toFile());
- NodeList nodeLst=doc.getElementsByTagName("entry");
- for(int i = 0; i < nodeLst.getLength(); i++) {
- String field = nodeLst.item(i).getAttributes("field");
- sum = sum +Integer.parseInt(field);
- }
- return sum;
- }
- }
- Class 2 Main
- import org.xml.sax.SAXException;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.TransformerException;
- import java.io.Console;
- import java.io.IOException;
- import java.nio.file.Path;
- import java.sql.SQLException;
- /**
- * Created by Кристина on 20.05.2018.
- */
- public class Main {
- public static void main(String[] args) {
- long startTime = System.currentTimeMillis();
- XmlSqlTest xst = new XmlSqlTest;
- xst = null;
- long sum = 0;
- try {
- xst.connectbd();
- xst.setN(1000000);
- xst.insertSqlTable ();
- xst.xmlOne ();
- Path path = xst.xmlTwo();
- sum = xst.parseXml(path);
- xst.getConnection().close();
- } catch (IOException | SAXException | SQLException | ParserConfigurationException | TransformerException e) {
- e.printStackTrace();
- }
- long timeSpent = (System.currentTimeMillis() – startTime)/1000/60;
- System.out.println("сумма ="+ sum+ "программа выполнялась " + timeSpent + " мин.")
- }
- }
Add Comment
Please, Sign In to add comment