1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sourceforge.schemaspy.util;
20
21 import javax.xml.transform.OutputKeys;
22 import javax.xml.transform.Transformer;
23 import javax.xml.transform.TransformerException;
24 import javax.xml.transform.TransformerFactory;
25 import javax.xml.transform.dom.DOMSource;
26 import javax.xml.transform.stream.StreamResult;
27 import org.w3c.dom.Node;
28
29 public class DOMUtil {
30 public static void printDOM(Node node, LineWriter out) throws TransformerException {
31 TransformerFactory factory = TransformerFactory.newInstance();
32 Transformer xformer;
33 boolean indentSpecified = false;
34
35
36
37 try {
38
39 factory.setAttribute("indent-number", new Integer(3));
40 indentSpecified = true;
41 } catch (IllegalArgumentException factoryDoesntSupportIndentNumber) {
42 }
43
44 xformer = factory.newTransformer();
45 xformer.setOutputProperty(OutputKeys.INDENT, "yes");
46 if (!indentSpecified)
47 xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "3");
48
49 xformer.transform(new DOMSource(node), new StreamResult(out));
50 }
51
52
53
54
55
56
57
58 public static void appendAttribute(Node node, String name, String value) {
59 Node attribute = node.getOwnerDocument().createAttribute(name);
60 attribute.setNodeValue(value);
61 node.getAttributes().setNamedItem(attribute);
62 }
63 }