Skip to content

Commit 59f39a7

Browse files
authored
Merge pull request mouredev#6953 from danhingar/ejercicio12
#12 - Java
2 parents f4fe48d + 1ffbfb0 commit 59f39a7

File tree

1 file changed

+249
-0
lines changed

1 file changed

+249
-0
lines changed
+249
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
2+
import java.io.BufferedReader;
3+
import java.io.ByteArrayInputStream;
4+
import java.io.File;
5+
import java.io.FileReader;
6+
import java.io.IOException;
7+
import java.io.InputStream;
8+
import java.nio.file.Files;
9+
import java.nio.file.Path;
10+
import java.text.ParseException;
11+
import java.text.SimpleDateFormat;
12+
import java.util.ArrayList;
13+
import java.util.Date;
14+
import java.util.HashMap;
15+
import java.util.List;
16+
import java.util.Map;
17+
18+
import javax.xml.parsers.DocumentBuilder;
19+
import javax.xml.parsers.DocumentBuilderFactory;
20+
import javax.xml.transform.Transformer;
21+
import javax.xml.transform.TransformerFactory;
22+
import javax.xml.transform.dom.DOMSource;
23+
import javax.xml.transform.stream.StreamResult;
24+
25+
import org.w3c.dom.Document;
26+
import org.w3c.dom.Element;
27+
import org.w3c.dom.NodeList;
28+
29+
public class danhingar {
30+
31+
public static void main(String[] args) throws Exception {
32+
createJSON();
33+
createXML();
34+
readJson("danhingar.json");
35+
readXML("danhingar.xml");
36+
37+
Files.delete(Path.of("danhingar.json"));
38+
Files.delete(Path.of("danhingar.xml"));
39+
loadDataFromJson();
40+
loadDataFromXML();
41+
}
42+
43+
private static void readJson(String path) {
44+
try {
45+
Path path2 = Path.of(path);
46+
Files.readAllLines(path2).stream().forEach(line -> System.out.println(line));
47+
} catch (Exception e) {
48+
System.out.println("Error al leer el fichero JSON");
49+
}
50+
}
51+
52+
private static void readXML(String filename) throws Exception {
53+
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
54+
Document doc = builder.parse(new File(filename));
55+
DOMSource dom = new DOMSource(doc);
56+
57+
Transformer transformer = TransformerFactory.newInstance().newTransformer();
58+
transformer.transform(dom, new StreamResult(System.out));
59+
System.out.println("");
60+
}
61+
62+
private static void createXML() {
63+
try {
64+
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
65+
DocumentBuilder builder;
66+
Document doc = null;
67+
builder = factory.newDocumentBuilder();
68+
doc = builder.newDocument();
69+
Element root = doc.createElement("user");
70+
doc.appendChild(root);
71+
72+
Element name = doc.createElement("name");
73+
name.appendChild(doc.createTextNode("Daniel"));
74+
root.appendChild(name);
75+
76+
Element age = doc.createElement("age");
77+
age.appendChild(doc.createTextNode("27"));
78+
root.appendChild(age);
79+
80+
Element birthDate = doc.createElement("birthDate");
81+
birthDate.appendChild(doc.createTextNode("29-04-1997"));
82+
root.appendChild(birthDate);
83+
84+
Element lenguages = doc.createElement("programmingLanguages");
85+
for (String language : List.of("Java", "Dart", "Swift")) {
86+
Element languageItem = doc.createElement("language");
87+
languageItem.setTextContent(language);
88+
lenguages.appendChild(languageItem);
89+
}
90+
91+
root.appendChild(lenguages);
92+
93+
DOMSource dom = new DOMSource(doc);
94+
Transformer transformer = TransformerFactory.newInstance()
95+
.newTransformer();
96+
97+
StreamResult result = new StreamResult(new File("danhingar.xml"));
98+
transformer.transform(dom, result);
99+
} catch (Exception e) {
100+
System.out.println("Error al crear el fichero XML");
101+
}
102+
}
103+
104+
private static void createJSON() {
105+
String jsonContent = "{\n" +
106+
" \"name\": \"Daniel\",\n" +
107+
" \"age\": 27,\n" +
108+
" \"birthDate\": \"29-04-1997\",\n" +
109+
" \"programmingLanguages\": [\"Java\", \"Dart\", \"Swift\"]\n" +
110+
"}";
111+
112+
try {
113+
Path path = Path.of("danhingar.json");
114+
Files.writeString(path, jsonContent);
115+
} catch (IOException e) {
116+
System.out.println("Error al crear el archivo JSON: " + e.getMessage());
117+
}
118+
}
119+
120+
// Extra
121+
private static void loadDataFromJson() {
122+
createJSON();
123+
try {
124+
Path path2 = Path.of("danhingar.json");
125+
List<String> lines = Files.readAllLines(path2);
126+
Map<String, Object> properties = new HashMap<>();
127+
for (int i = 1; i < lines.size() - 1; i++) {
128+
String[] keyValue = lines.get(i).split(":");
129+
String key = keyValue[0].trim().replaceAll("\"", "");
130+
String value = keyValue[1].trim().replaceAll("\"", "");
131+
properties.put(key, value);
132+
}
133+
134+
String name = properties.get("name").toString().replaceAll(",", "");
135+
Integer age = Integer.parseInt(properties.get("age").toString().replaceAll(",", ""));
136+
Date birthDate = toDate(properties.get("birthDate").toString().replaceAll(",", ""));
137+
String[] languages = properties.get("programmingLanguages").toString().split(",");
138+
List<String> languagesList = List.of(languages);
139+
140+
Data data = new Data(name, age, birthDate, languagesList);
141+
142+
System.out.println(data.toString());
143+
} catch (Exception e) {
144+
System.out.println("Error al crear la clase Data desde el fichero JSON");
145+
}
146+
}
147+
148+
private static void loadDataFromXML() {
149+
createXML();
150+
try {
151+
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
152+
DocumentBuilder builder = factory.newDocumentBuilder();
153+
StringBuilder contenido = new StringBuilder();
154+
155+
try (BufferedReader br = new BufferedReader(new FileReader("danhingar.xml"))) {
156+
String linea;
157+
158+
while ((linea = br.readLine()) != null) {
159+
contenido.append(linea).append("\n");
160+
}
161+
}
162+
InputStream is = new ByteArrayInputStream(contenido.toString().getBytes("UTF-8"));
163+
Document document = builder.parse(is);
164+
165+
Element root = document.getDocumentElement();
166+
167+
String name = root.getElementsByTagName("name").item(0).getTextContent();
168+
Integer age = Integer.parseInt(root.getElementsByTagName("age").item(0).getTextContent());
169+
Date birthDate = toDate(root.getElementsByTagName("birthDate").item(0).getTextContent());
170+
NodeList languages = root.getElementsByTagName("language");
171+
List<String> languagesList = new ArrayList<>();
172+
for (int i = 0; i < languages.getLength(); i++) {
173+
languagesList.add(languages.item(i).getTextContent());
174+
}
175+
176+
Data data = new Data(name, age, birthDate, languagesList);
177+
178+
System.out.println(data.toString());
179+
180+
} catch (Exception e) {
181+
System.out.println("Error al crear la clase Data desde el fichero XML");
182+
}
183+
184+
}
185+
186+
public static class Data {
187+
private String name;
188+
private Integer age;
189+
private Date birthDate;
190+
private List<String> programmingLanguages;
191+
192+
public Data(String name, Integer age, Date birthDate, List<String> programmingLanguages) {
193+
this.name = name;
194+
this.age = age;
195+
this.birthDate = birthDate;
196+
this.programmingLanguages = programmingLanguages;
197+
}
198+
199+
public String getName() {
200+
return name;
201+
}
202+
203+
public void setName(String name) {
204+
this.name = name;
205+
}
206+
207+
public Integer getAge() {
208+
return age;
209+
}
210+
211+
public void setAge(Integer age) {
212+
this.age = age;
213+
}
214+
215+
public Date getBirthDate() {
216+
return birthDate;
217+
}
218+
219+
public void setBirthDate(Date birthDate) {
220+
this.birthDate = birthDate;
221+
}
222+
223+
public List<String> getProgrammingLanguages() {
224+
return programmingLanguages;
225+
}
226+
227+
public void setProgrammingLanguages(List<String> programmingLanguages) {
228+
this.programmingLanguages = programmingLanguages;
229+
}
230+
231+
@Override
232+
public String toString() {
233+
return "Data [name=" + name + ", age=" + age + ", birthDate=" + birthDate + ", programmingLanguages="
234+
+ programmingLanguages + "]";
235+
}
236+
}
237+
238+
private static Date toDate(String dateString) {
239+
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
240+
241+
try {
242+
Date date = dateFormat.parse(dateString);
243+
return date;
244+
} catch (ParseException e) {
245+
System.err.println("Invalid date format: " + e.getMessage());
246+
return null;
247+
}
248+
}
249+
}

0 commit comments

Comments
 (0)