-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathXMLFactoryImplementation.java
More file actions
133 lines (115 loc) · 5.05 KB
/
XMLFactoryImplementation.java
File metadata and controls
133 lines (115 loc) · 5.05 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import org.w3c.dom.*;
import org.xml.sax.InputSource;
import javax.xml.parsers.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactoryConfigurationError;
import java.util.*;
import java.io.*;
import java.text.*;
public class XMLFactoryImplementation implements XMLFactory {
public XMLFactoryImplementation() throws IOException {}
static Document document = null;
static String newString = null;
static String ID = null;
public String buildXML(String contentID, String inputFile) throws IOException, TransformerFactoryConfigurationError {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.newDocument();
Reader reader = new FileReader(inputFile);
Scanner scanner = new Scanner(reader);
String ID = contentID;
Element root = document.createElement("feed");
document.appendChild(root);
Element firstEntry = document.createElement("entry");
Attr attribute = document.createAttribute("id");
attribute.setValue(ID);
root.setAttributeNode(attribute);
Attr language = document.createAttribute("xml:lang");
language.setValue("en-US");
root.setAttributeNode(language);
Attr xmlns = document.createAttribute("xmlns");
xmlns.setValue("http://www.w3.org/2005/Atom");
root.setAttributeNode(xmlns);
root.appendChild(firstEntry);
Element tempEntry = firstEntry;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line != "entry") {
String[] temp = line.split(":");
Element entryElement = document.createElement(temp[0]);
Text child = document.createTextNode(temp[1]);
entryElement.appendChild(child);
tempEntry.appendChild(entryElement);
}
else {
Element entry = document.createElement("entry");
root.appendChild(entry);
tempEntry = entry;
}
}
TransformerFactory tsf = TransformerFactory.newInstance();
Transformer ts = tsf.newTransformer();
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(document);
ts.transform(source,result);
newString = sw.toString();
ts.transform(source, result);
scanner.close();
}
catch (IOException e) {
System.out.println("Error: " + e.getMessage());
e.printStackTrace();
}
finally {
return newString;
}
}
public void printXML(int number, String xmlString) throws IOException {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
byte[] bytes = xmlString.getBytes();
ByteArrayInputStream byteArrayIS = new ByteArrayInputStream(bytes);
document = builder.parse(byteArrayIS);
document.getDocumentElement().normalize();
NodeList elements = document.getElementsByTagName("*");
String nodeName = null;
int counter = 0;
while (elements.getLength() > counter) {
Node node = elements.item(counter);
Element element = (Element) node;
nodeName = element.getNodeName();
if (nodeName.equalsIgnoreCase("entry")) {
System.out.println("\r\n" + nodeName);
} else if (nodeName.equalsIgnoreCase("feed")) {
System.out.println("\r\n" + nodeName + " " + number + " source: Content Server " +
element.getAttribute("id") + "\r\n----------------------------------------");
} else {
System.out.println(nodeName + ": " + element.getTextContent());
}
counter++;
}
}
catch (Exception e) {
e.printStackTrace();
}
}
public Document stringParser(String xmlString) {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
}
catch (Exception e) {
e.printStackTrace();
}
finally {
return document;
}
}
}