diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/DOMUtils.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/DOMUtils.java | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/DOMUtils.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/DOMUtils.java new file mode 100644 index 00000000..db00213d --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/DOMUtils.java @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.util; + +import org.w3c.dom.CDATASection; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Text; + +// CheckStyle:HideUtilityClassConstructorCheck OFF - bc + +/** + * Some utility methods for common tasks when building DOM trees in memory. + * + * <p>In this documentation <code><a></code> means an {@link + * org.w3c.dom.Element Element} instance with name <code>a</code>.</p> + * + * @since Ant 1.6.3 + */ +public class DOMUtils { + + /** + * Get a new Document instance, + * @return the document. + * @since Ant 1.6.3 + */ + public static Document newDocument() { + return JAXPUtils.getDocumentBuilder().newDocument(); + } + + /** + * Creates a named Element and appends it to the given element, + * returns it. + * + * <p>This means + * <pre>createChildElement(<a>, "b")</pre> + * creates + * <pre> + * <a> + * <b/> + * </a> + * </pre> + * and returns <code><b></code>. + * + * @param parent element that will receive the new element as child. + * @param name name of the new element. + * @return the new element. + * + * @since Ant 1.6.3 + */ + public static Element createChildElement(Element parent, String name) { + Document doc = parent.getOwnerDocument(); + Element e = doc.createElement(name); + parent.appendChild(e); + return e; + } + + /** + * Adds nested text. + * + * <p>This means + * <pre>appendText(<a>, "b")</pre> + * creates + * <pre> + * <a>b</a> + * </pre> + * + * @param parent element that will receive the new element as child. + * @param content text content. + * + * @since Ant 1.6.3 + */ + public static void appendText(Element parent, String content) { + Document doc = parent.getOwnerDocument(); + Text t = doc.createTextNode(content); + parent.appendChild(t); + } + + /** + * Adds a nested CDATA section. + * + * <p>This means + * <pre>appendCDATA(<a>, "b")</pre> + * creates + * <pre> + * <a><[!CDATA[b]]></a> + * </pre> + * + * @param parent element that will receive the new element as child. + * @param content text content. + * + * @since Ant 1.6.3 + */ + public static void appendCDATA(Element parent, String content) { + Document doc = parent.getOwnerDocument(); + CDATASection c = doc.createCDATASection(content); + parent.appendChild(c); + } + + /** + * Adds nested text in a new child element. + * + * <p>This means + * <pre>appendTextElement(<a>, "b", "c")</pre> + * creates + * <pre> + * <a> + * <b>c</b> + * </a> + * </pre> + * + * @param parent element that will receive the new element as child. + * @param name of the child element. + * @param content text content. + * + * @since Ant 1.6.3 + */ + public static void appendTextElement(Element parent, String name, + String content) { + Element e = createChildElement(parent, name); + appendText(e, content); + } + + /** + * Adds a nested CDATA section in a new child element. + * + * <p>This means + * <pre>appendCDATAElement(<a>, "b", "c")</pre> + * creates + * <pre> + * <a> + * <b><![CDATA[c]]></b> + * </a> + * </pre> + * + * @param parent element that will receive the new element as child. + * @param name of the child element. + * @param content text content. + * + * @since Ant 1.6.3 + */ + public static void appendCDATAElement(Element parent, String name, + String content) { + Element e = createChildElement(parent, name); + appendCDATA(e, content); + } +} |