annotate artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java @ 336:2c968defd878

Fix debug helper toString(Node). artifacts/trunk@2816 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 23 Sep 2011 08:42:17 +0000
parents e7d3f74854fb
children ec5c7e54cae1
rev   line source
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 /*
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2 * Copyright (c) 2010 by Intevation GmbH
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 *
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 * Read the file LGPL.txt coming with the software for details
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
103
1282cf96d3eb Corrected a package definition in the artifacts-common package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 102
diff changeset
9 package de.intevation.artifacts.common.utils;
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
11 import java.util.Map;
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
12 import java.util.zip.GZIPInputStream;
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
13 import java.util.zip.GZIPOutputStream;
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
14
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
15 import java.io.ByteArrayInputStream;
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
16 import java.io.FileInputStream;
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
17 import java.io.BufferedInputStream;
135
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
18 import java.io.ByteArrayOutputStream;
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import java.io.File;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import java.io.IOException;
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
21 import java.io.InputStream;
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 import java.io.OutputStream;
276
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
23 import java.io.StringWriter;
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 import javax.xml.namespace.NamespaceContext;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import javax.xml.namespace.QName;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import javax.xml.parsers.DocumentBuilderFactory;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 import javax.xml.parsers.ParserConfigurationException;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 import javax.xml.transform.Transformer;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 import javax.xml.transform.TransformerConfigurationException;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 import javax.xml.transform.TransformerException;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 import javax.xml.transform.TransformerFactory;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 import javax.xml.transform.TransformerFactoryConfigurationError;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 import javax.xml.transform.dom.DOMSource;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 import javax.xml.transform.stream.StreamResult;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 import javax.xml.xpath.XPath;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 import javax.xml.xpath.XPathConstants;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 import javax.xml.xpath.XPathExpressionException;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 import javax.xml.xpath.XPathFactory;
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
45 import javax.xml.xpath.XPathVariableResolver;
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 import org.apache.log4j.Logger;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 import org.w3c.dom.Attr;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 import org.w3c.dom.Document;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 import org.w3c.dom.Element;
335
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
52 import org.w3c.dom.Node;
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 import org.xml.sax.SAXException;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 * Some helper functions to ease work with XML concering namespaces, XPATH
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 * and so on.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 public final class XMLUtils
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 * W3C URL of XForms
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 public static final String XFORM_URL = "http://www.w3.org/2002/xforms";
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 * W3C prefix of XForms
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 public static final String XFORM_PREFIX = "xform";
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 private static Logger logger = Logger.getLogger(XMLUtils.class);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 private XMLUtils() {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 * Helper class to generate elements and attributes with
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 * namespaces.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 public static class ElementCreator
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 * owner document of the elements to be created
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 protected Document document;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 * namespace to be used
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 protected String ns;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 * prefix to be used
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 protected String prefix;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 * Constructor to create an element/attribute creator
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 * with a given namespace and namespace prefix using a
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 * given owner document.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 * @param document The owning document
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 * @param ns The namespace
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 * @param prefix The namespace prefix
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 public ElementCreator(Document document, String ns, String prefix) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 this.document = document;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 this.ns = ns;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 this.prefix = prefix;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 * Creates a new element using the owning document with
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 * the this creators namespace and namespace prefix.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 * @param name The name of the element
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 * @return The new element
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 public Element create(String name) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 Element element = document.createElementNS(ns, name);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 element.setPrefix(prefix);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 return element;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 * Adds a new attribute and its value to a given element.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 * It does not set the namespace prefix.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 * @param element The element to add the attribute to
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 * @param name The name of the attribute
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 * @param value The value of the attribute
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 public void addAttr(Element element, String name, String value) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 addAttr(element, name, value, false);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 * Adds a new attribute and its value to a given element.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 * If the namespace prefix is used is decided by the 'addPrefix' flag.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 * @param element The element to add the attribute to
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137 * @param name The name of the attribute
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 * @param value The value of the attribute
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 * @param addPrefix If true the creators namespace prefix is
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 * set on the attribute.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142 public void addAttr(
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143 Element element,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 String name,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
145 String value,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 boolean addPrefix
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 ) {
202
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
148 if (addPrefix) {
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
149 Attr attr = document.createAttributeNS(ns, name);
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
150 attr.setValue(value);
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151 attr.setPrefix(prefix);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152
202
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
153 element.setAttributeNode(attr);
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
154 }
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
155 else {
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
156 element.setAttribute(name, value);
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
157 }
c03d3a872cd2 Fixed a bug in the ElementCreator of the XMLUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
158
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 } // class ElementCreator
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 * Creates a new XML document
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 * @return the new XML document ot null if something went wrong during
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 * creation.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167 public static final Document newDocument() {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 factory.setNamespaceAware(true);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 try {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 return factory.newDocumentBuilder().newDocument();
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174 catch (ParserConfigurationException pce) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
175 logger.error(pce.getLocalizedMessage(), pce);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 return null;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179
335
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
180
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
181 /**
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
182 * Create xml/string representation of element (nested in otherwise empty
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
183 * document).
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
184 * @param element element to inspect in string.
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
185 * @return string with xml representation of element.
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
186 */
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
187 public final static String toString(Element element) {
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
188 Document doc = newDocument();
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
189 doc.appendChild(doc.importNode(element,true));
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
190 return toString(doc);
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
191 }
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
192
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
193
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
194 /**
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
195 * Creates xml/string representation of node (nested in otherwise empty
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
196 * document).
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
197 * @param element element to inspect in string.
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
198 * @return string with xml representation of element.
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
199 */
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
200 public final static String toString(Node node) {
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
201 Document doc = newDocument();
336
2c968defd878 Fix debug helper toString(Node).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 335
diff changeset
202 doc.importNode(node, true);
335
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
203 return toString(doc);
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
204 }
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
205
e7d3f74854fb Added XMLUtils functions helping to debug parts of xml documents.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 323
diff changeset
206
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 * Loads a XML document namespace aware from a file
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209 * @param file The file to load.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 * @return the XML document or null if something went wrong
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211 * during loading.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213 public static final Document parseDocument(File file) {
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
214 InputStream inputStream = null;
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
215 try {
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
216 inputStream = new BufferedInputStream(new FileInputStream(file));
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
217 return parseDocument(inputStream);
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
218 }
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
219 catch (IOException ioe) {
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
220 logger.error(ioe.getLocalizedMessage(), ioe);
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
221 }
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
222 finally {
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
223 if (inputStream != null) {
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
224 try { inputStream.close(); }
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
225 catch (IOException ioe) {}
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
226 }
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
227 }
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
228 return null;
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
229 }
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
230
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
231 public static final Document parseDocument(InputStream inputStream) {
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
232 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
233 factory.setNamespaceAware(true);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
234
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 try {
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
236 return factory.newDocumentBuilder().parse(inputStream);
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
238 catch (ParserConfigurationException pce) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 logger.error(pce.getLocalizedMessage(), pce);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 catch (SAXException se) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 logger.error(se.getLocalizedMessage(), se);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
243 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244 catch (IOException ioe) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 logger.error(ioe.getLocalizedMessage(), ioe);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
247 return null;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
248 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
249
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
251 * Creates a new XPath without a namespace context.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
252 * @return the new XPath.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
253 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
254 public static final XPath newXPath() {
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
255 return newXPath(null, null);
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
258 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
259 * Creates a new XPath with a given namespace context.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
260 * @param namespaceContext The namespace context to be used or null
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
261 * if none should be used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
262 * @return The new XPath
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
263 */
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
264 public static final XPath newXPath(
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
265 NamespaceContext namespaceContext,
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
266 XPathVariableResolver resolver)
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
267 {
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
268 XPathFactory factory = XPathFactory.newInstance();
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
269 XPath xpath = factory.newXPath();
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
270 if (namespaceContext != null) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
271 xpath.setNamespaceContext(namespaceContext);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
272 }
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
273
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
274 if (resolver != null) {
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
275 xpath.setXPathVariableResolver(resolver);
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
276 }
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
277 return xpath;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
278 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
279
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
280 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
281 * Evaluates an XPath query on a given object and returns the result
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
282 * as a given type. No namespace context is used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
283 * @param root The object which is used as the root of the tree to
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
284 * be searched in.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
285 * @param query The XPath query
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
286 * @param returnTyp The type of the result.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
287 * @return The result of type 'returnTyp' or null if something
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
288 * went wrong during XPath evaluation.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
289 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
290 public static final Object xpath(
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
291 Object root,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
292 String query,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
293 QName returnTyp
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
294 ) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
295 return xpath(root, query, returnTyp, null);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
296 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
297
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
298 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
299 * Evaluates an XPath query on a given object and returns the result
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
300 * as a string. A given namespace context is used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
301 * @param root The object which is used as the root of the tree to
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
302 * be searched in.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
303 * @param query The XPath query
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
304 * @param namespaceContext The namespace context to be used or null
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
305 * if none should be used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
306 * @return The result of the query or null if something went wrong
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
307 * during XPath evaluation.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
308 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
309 public static final String xpathString(
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
310 Object root, String query, NamespaceContext namespaceContext
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
311 ) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
312 return (String)xpath(
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
313 root, query, XPathConstants.STRING, namespaceContext);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
314 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
315
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
317 * Evaluates an XPath query on a given object and returns the result
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318 * as a given type. Optionally a namespace context is used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 * @param root The object which is used as the root of the tree to
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
320 * be searched in.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321 * @param query The XPath query
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322 * @param returnType The type of the result.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
323 * @param namespaceContext The namespace context to be used or null
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
324 * if none should be used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325 * @return The result of type 'returnTyp' or null if something
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 * went wrong during XPath evaluation.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
327 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
328 public static final Object xpath(
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
329 Object root,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
330 String query,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
331 QName returnType,
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
332 NamespaceContext namespaceContext
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
333 ) {
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
334 return xpath(root, query, returnType, namespaceContext, null);
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
335 }
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
336
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
337 public static final Object xpath(
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
338 Object root,
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
339 String query,
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
340 QName returnType,
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
341 NamespaceContext namespaceContext,
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
342 Map<String, String> variables)
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
343 {
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
344 if (root == null) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
345 return null;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
346 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
347
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
348 XPathVariableResolver resolver = variables != null
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
349 ? new MapXPathVariableResolver(variables)
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
350 : null;
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
351
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
352 try {
323
1d3607ceb9fa Improved the XMLUtils to support xpath expressions that contain variables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 286
diff changeset
353 XPath xpath = newXPath(namespaceContext, resolver);
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
354 if (xpath != null) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
355 return xpath.evaluate(query, root, returnType);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
356 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
357 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
358 catch (XPathExpressionException xpee) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
359 logger.error(xpee.getLocalizedMessage(), xpee);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
360 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
361
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
362 return null;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
363 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
364
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
365 /**
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
366 * Streams out an XML document to a given output stream.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
367 * @param document The document to be streamed out.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
368 * @param out The output stream to be used.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
369 * @return true if operation succeeded else false.
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
370 */
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
371 public static boolean toStream(Document document, OutputStream out) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
372 try {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
373 Transformer transformer =
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
374 TransformerFactory.newInstance().newTransformer();
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
375 DOMSource source = new DOMSource(document);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
376 StreamResult result = new StreamResult(out);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
377 transformer.transform(source, result);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
378 return true;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
379 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
380 catch (TransformerConfigurationException tce) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
381 logger.error(tce.getLocalizedMessage(), tce);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
382 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
383 catch (TransformerFactoryConfigurationError tfce) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
384 logger.error(tfce.getLocalizedMessage(), tfce);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
385 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
386 catch (TransformerException te) {
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
387 logger.error(te.getLocalizedMessage(), te);
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
388 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
389
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
390 return false;
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
391 }
135
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
392
286
715bdf990739 Made XMLUtils.toString(Document) static.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 276
diff changeset
393 public static String toString(Document document) {
276
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
394 try {
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
395 Transformer transformer =
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
396 TransformerFactory.newInstance().newTransformer();
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
397 DOMSource source = new DOMSource(document);
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
398 StringWriter out = new StringWriter();
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
399 StreamResult result = new StreamResult(out);
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
400 transformer.transform(source, result);
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
401 out.flush();
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
402 return out.toString();
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
403 }
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
404 catch (TransformerConfigurationException tce) {
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
405 logger.error(tce.getLocalizedMessage(), tce);
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
406 }
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
407 catch (TransformerFactoryConfigurationError tfce) {
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
408 logger.error(tfce.getLocalizedMessage(), tfce);
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
409 }
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
410 catch (TransformerException te) {
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
411 logger.error(te.getLocalizedMessage(), te);
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
412 }
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
413
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
414 return null;
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
415 }
8b58259d3dd3 Added static toString(Document) method which transform XML documents to Strings.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 234
diff changeset
416
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
417 public static byte [] toByteArray(Document document) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
418 return toByteArray(document, false);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
419 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
420
135
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
421 /**
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
422 * Transforms an XML document into a byte array.
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
423 * @param document The document to be streamed out.
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
424 * @param compress The document should be compressed, too.
135
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
425 * @return the byte array or null if operation failed or
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
426 * document is null.
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
427 */
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
428 public static byte [] toByteArray(Document document, boolean compress) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
429 if (document != null) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
430 try {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
431 ByteArrayOutputStream baos = new ByteArrayOutputStream();
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
432 OutputStream out = compress
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
433 ? new GZIPOutputStream(baos)
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
434 : baos;
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
435 boolean success = toStream(document, out);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
436 out.flush();
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
437 out.close();
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
438 return success
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
439 ? baos.toByteArray()
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
440 : null;
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
441 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
442 catch (IOException ioe) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
443 logger.error(ioe);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
444 }
135
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
445 }
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
446 return null;
135
a48882c9e096 Added a convinience method to transform an document into a byte array.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 103
diff changeset
447 }
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
448
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
449 public static Document fromByteArray(byte [] data) {
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
450 return fromByteArray(data, false);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
451 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
452
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
453 public static Document fromByteArray(byte [] data, boolean decompress) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
454 if (data != null) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
455 InputStream in = new ByteArrayInputStream(data);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
456 try {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
457 if (decompress) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
458 in = new GZIPInputStream(in);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
459 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
460 return parseDocument(in);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
461 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
462 catch (IOException ioe) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
463 logger.error(ioe);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
464 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
465 finally {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
466 try {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
467 in.close();
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
468 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
469 catch (IOException ioe) {
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
470 logger.error(ioe);
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
471 }
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
472 }
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
473 }
234
23d642319a0b Added a boolean flag to XML byte serialisation to compress/decompress, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 202
diff changeset
474 return null;
147
9a64e0c1c737 Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 135
diff changeset
475 }
102
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
476 }
4122dbc9711b Added a new package artifacts-common for classes and utilities used in several packages.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
477 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org