forked from janbodnar/Java-Advanced
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJavaXmlDomWrite.java
More file actions
70 lines (50 loc) · 2.4 KB
/
JavaXmlDomWrite.java
File metadata and controls
70 lines (50 loc) · 2.4 KB
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
package com.zetcode;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
public class JavaXmlDomWrite {
public static void main(String[] args) throws ParserConfigurationException,
TransformerException {
var factory = DocumentBuilderFactory.newInstance();
var builder = factory.newDocumentBuilder();
var doc = builder.newDocument();
var root = doc.createElementNS("zetcode.com", "users");
doc.appendChild(root);
root.appendChild(createUser(doc, "1", "Robert", "Brown", "programmer"));
root.appendChild(createUser(doc, "2", "Pamela", "Kyle", "writer"));
root.appendChild(createUser(doc, "3", "Peter", "Smith", "teacher"));
var transformerFactory = TransformerFactory.newInstance();
var transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
var source = new DOMSource(doc);
var myFile = new File("src/main/resources/users.xml");
var console = new StreamResult(System.out);
var file = new StreamResult(myFile);
transformer.transform(source, console);
transformer.transform(source, file);
}
private static Node createUser(Document doc, String id, String firstName,
String lastName, String occupation) {
var user = doc.createElement("user");
user.setAttribute("id", id);
user.appendChild(createUserElement(doc, "firstname", firstName));
user.appendChild(createUserElement(doc, "lastname", lastName));
user.appendChild(createUserElement(doc, "occupation", occupation));
return user;
}
private static Node createUserElement(Document doc, String name,
String value) {
var node = doc.createElement(name);
node.appendChild(doc.createTextNode(value));
return node;
}
}