Skip to content

Commit c372bf4

Browse files
author
A. Apesteguia
committed
First commit
0 parents  commit c372bf4

File tree

6 files changed

+302
-0
lines changed

6 files changed

+302
-0
lines changed

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Eclipse
2+
.classpath
3+
.project
4+
.settings/
5+
6+
# Intellij
7+
.idea/
8+
*.iml
9+
*.iws
10+
out/
11+
artifacts/
12+
13+
# Mac
14+
.DS_Store
15+
16+
# Maven
17+
log/
18+
target/

pom.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>org.codepressed</groupId>
8+
<artifactId>CodepressedConverter</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
<properties>
11+
<maven.compiler.source>1.11</maven.compiler.source>
12+
<maven.compiler.target>1.11</maven.compiler.target>
13+
</properties>
14+
<dependencies>
15+
<dependency>
16+
<groupId>junit</groupId>
17+
<artifactId>junit</artifactId>
18+
<version>4.12</version>
19+
<scope>compile</scope>
20+
</dependency>
21+
</dependencies>
22+
</project>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.codepressed.CSVtoXML;
2+
3+
import org.w3c.dom.Document;
4+
import javax.xml.parsers.ParserConfigurationException;
5+
import javax.xml.transform.TransformerException;
6+
import java.io.IOException;
7+
import java.util.ArrayList;
8+
9+
public class Main {
10+
public static void main(String[] args){
11+
12+
//Initialization
13+
String csvFile = args[0];
14+
String xmlFile = args[1];
15+
16+
//ArrayList of ArrayStrings Generation with CSV
17+
ArrayList<String[]> elements = null;
18+
try {
19+
elements = new Reader().CSVtoArrayList(csvFile);
20+
} catch (IOException e) {
21+
System.out.println("File wasn't found, error: "+e);;
22+
}
23+
24+
//XML Doc Generation with ArrayList
25+
Document xmlDoc = null;
26+
try {
27+
xmlDoc = new Util().docBuilder(elements);
28+
} catch (ParserConfigurationException e) {
29+
System.out.println("Configuration error: "+e);;
30+
}
31+
32+
//Transform xml DOC to a xml FILE
33+
try {
34+
Util.transform(xmlDoc,xmlFile);
35+
} catch (TransformerException e) {
36+
System.out.println("Transformer error: "+e);;
37+
}
38+
}
39+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.codepressed.CSVtoXML;
2+
3+
import java.io.*;
4+
import java.util.ArrayList;
5+
6+
7+
public class Reader {
8+
9+
/*/
10+
ArrayList Generation ArrayStrings with the CSV Data
11+
*/
12+
public ArrayList<String[]> CSVtoArrayList(String csvFile) throws IOException {
13+
ArrayList<String[]> elements = new ArrayList<String[]>();
14+
String csvSplit = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
15+
String line = "";
16+
BufferedReader csvReader = null;
17+
18+
try {
19+
csvReader = new BufferedReader(new FileReader(csvFile));
20+
} catch (FileNotFoundException e) {
21+
e.printStackTrace();
22+
}
23+
24+
while ((line = csvReader.readLine()) != null) {
25+
String[] nodes = line.split(csvSplit);
26+
elements.add(nodes);
27+
}
28+
29+
return elements;
30+
}
31+
32+
33+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.codepressed.CSVtoXML;
2+
3+
import org.w3c.dom.Document;
4+
import org.w3c.dom.Element;
5+
import org.w3c.dom.Text;
6+
7+
import javax.xml.parsers.DocumentBuilder;
8+
import javax.xml.parsers.DocumentBuilderFactory;
9+
import javax.xml.parsers.ParserConfigurationException;
10+
import javax.xml.transform.*;
11+
import javax.xml.transform.dom.DOMSource;
12+
import javax.xml.transform.stream.StreamResult;
13+
import java.io.File;
14+
import java.io.FileNotFoundException;
15+
import java.io.FileOutputStream;
16+
import java.util.ArrayList;
17+
18+
public class Util {
19+
20+
/*/
21+
DOC Generation -> XML with ArrayList String elements
22+
*/
23+
public Document docBuilder(ArrayList<String[]> elements) throws ParserConfigurationException {
24+
DocumentBuilderFactory xmlFactory = DocumentBuilderFactory.newInstance();
25+
DocumentBuilder xmlBuilder = xmlFactory.newDocumentBuilder();
26+
Document xmlDoc = xmlBuilder.newDocument();
27+
28+
Element rootElement = xmlDoc.createElement("root");
29+
xmlDoc.appendChild(rootElement);
30+
31+
Element mainElement = xmlDoc.createElement("elements");
32+
rootElement.appendChild(mainElement);
33+
34+
boolean headerDefined = false; //First while will be to define header
35+
String[] header = new String[elements.size()]; //Header initialization
36+
37+
/*/
38+
DOC Generation -> XML Generation of every ELEMENT
39+
*/
40+
for (String[] node : elements) { //FOR every ArrayString
41+
if (headerDefined) {
42+
Element nodesElements = xmlDoc.createElement("element");
43+
mainElement.appendChild(nodesElements);
44+
45+
for (int j = 0; j < node.length; j++) {
46+
node[j] = node[j].replaceAll("\"", "").trim();
47+
Element nodesValues = xmlDoc.createElement(header[j]);
48+
nodesElements.appendChild(nodesValues);
49+
Text nodeTxt = xmlDoc.createTextNode(node[j]);
50+
nodesValues.appendChild(nodeTxt);
51+
}
52+
}
53+
/*/
54+
DOC Generation -> Array Generation of every COL Name for NODES
55+
*/
56+
else {
57+
header = node;
58+
for (int k = 0; k < node.length; k++) {
59+
header[k] = header[k].replaceAll("[^a-zA-Z0-9]", "");
60+
//We want to make sure NODE isn't NUMERIC. If it is, we make a patch
61+
try {
62+
Integer.parseInt(header[k]);
63+
header[k] = "node" + header[k];
64+
} catch (NumberFormatException e) {
65+
}
66+
}
67+
headerDefined = true;
68+
}
69+
}
70+
return (xmlDoc);
71+
}
72+
73+
/*/
74+
XML Generation -> Transform DOC Data to XML Format
75+
*/
76+
public static void transform(Document xmlDoc, String xmlFile) throws TransformerException {
77+
TransformerFactory xmlTransformerFactory = TransformerFactory.newInstance();
78+
Transformer xmlTransformer = xmlTransformerFactory.newTransformer();
79+
xmlTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
80+
xmlTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
81+
xmlTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
82+
xmlTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
83+
FileOutputStream outputStream = null;
84+
try {
85+
outputStream = new FileOutputStream((new File(xmlFile)));
86+
} catch (FileNotFoundException e) {
87+
e.printStackTrace();
88+
}
89+
xmlTransformer.transform(new DOMSource(xmlDoc), new StreamResult(outputStream));
90+
}
91+
92+
}
93+

src/test/java/Main.java

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import org.junit.Test;
2+
3+
import org.w3c.dom.*;
4+
5+
import javax.xml.parsers.DocumentBuilder;
6+
import javax.xml.parsers.DocumentBuilderFactory;
7+
import javax.xml.parsers.ParserConfigurationException;
8+
import javax.xml.transform.*;
9+
import javax.xml.transform.dom.DOMSource;
10+
import javax.xml.transform.stream.StreamResult;
11+
12+
import java.io.*;
13+
import java.util.ArrayList;
14+
15+
16+
17+
public class Main {
18+
@Test
19+
public void FinalCSVReader() throws IOException, ParserConfigurationException, TransformerException {
20+
//Initialization
21+
String csvFile = "C:\\Users\\Dani\\testing\\grades.csv";
22+
String line = "";
23+
String csvSplit = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
24+
25+
//CSV BufferedReader
26+
BufferedReader csvReader;
27+
csvReader = new BufferedReader(new FileReader(csvFile));
28+
29+
//ArrayList of ArrayStrings
30+
ArrayList<String[]> elements = new ArrayList<String[]>();
31+
32+
//CSV to ArrayList of ArrayStrings
33+
while ((line = csvReader.readLine()) != null) {
34+
String[] nodes = line.split(csvSplit);
35+
elements.add(nodes);
36+
}
37+
38+
//XML Root elements generation
39+
DocumentBuilderFactory xmlFactory = DocumentBuilderFactory.newInstance();
40+
DocumentBuilder xmlBuilder = xmlFactory.newDocumentBuilder();
41+
Document xmlDoc = xmlBuilder.newDocument();
42+
43+
Element rootElement = xmlDoc.createElement("root");
44+
xmlDoc.appendChild(rootElement);
45+
46+
Element mainElement = xmlDoc.createElement("elements");
47+
rootElement.appendChild(mainElement);
48+
49+
50+
boolean headerDefined = false; //First while will be to define header
51+
String[] header = new String[elements.size()]; //Header initialization
52+
53+
//XML Node elements generation
54+
for (String[] node : elements) { //FOR every ArrayString
55+
if (headerDefined) {
56+
Element nodesElements = xmlDoc.createElement("element");
57+
mainElement.appendChild(nodesElements);
58+
59+
for (int j = 0; j < node.length; j++) {
60+
node[j] = node[j].replaceAll("\"", "").trim();
61+
//System.out.println(node[j]);
62+
//System.out.println(header[j] + " owo");
63+
Element nodesValues = xmlDoc.createElement(header[j]);
64+
nodesElements.appendChild(nodesValues);
65+
Text nodeTxt = xmlDoc.createTextNode(node[j]);
66+
nodesValues.appendChild(nodeTxt);
67+
}
68+
}
69+
//Header generation
70+
else{
71+
header = node; //Header has a independent array
72+
for (int k = 0; k < node.length; k++) {
73+
header[k] = header[k].replaceAll("[^a-zA-Z0-9]", "");
74+
//We want to make sure NODE isn't NUMERIC. If it is, we make a patch
75+
try {
76+
Integer.parseInt(header[k]);
77+
header[k] = "node" + header[k];
78+
} catch (NumberFormatException e) {
79+
}
80+
}
81+
headerDefined = true;
82+
}
83+
}
84+
85+
//XML File OutputFormat
86+
TransformerFactory xmlTransformerFactory = TransformerFactory.newInstance();
87+
Transformer xmlTransformer = xmlTransformerFactory.newTransformer();
88+
xmlTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
89+
xmlTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
90+
xmlTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
91+
xmlTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
92+
FileOutputStream outputStream = new FileOutputStream((new File("C:\\Users\\Dani\\testing\\XMLoutput.xml")));
93+
xmlTransformer.transform(new DOMSource(xmlDoc), new StreamResult(outputStream));
94+
95+
96+
}
97+
}

0 commit comments

Comments
 (0)