rename XML Element - Java XML

Java examples for XML:DOM Element

Description

rename XML Element

Demo Code

/**//  w w w .  j  a v  a2s .c  om
 *  Copyright 2012 Sven Ewald
 *
 *  Licensed 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 com.java2s;

import java.util.LinkedList;
import java.util.List;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    /**
     * @param element
     * @param newName
     * @return a new Element instance with desired name and content.
     */
    public static Element renameElement(final Element element,
            final String newName) {
        Document document = element.getOwnerDocument();
        // Element newElement = document.createElement(newName);
        final Element newElement = createElement(document, newName);
        NodeList nodeList = element.getChildNodes();
        List<Node> toBeMoved = new LinkedList<Node>();
        for (int i = 0; i < nodeList.getLength(); ++i) {
            toBeMoved.add(nodeList.item(i));
        }
        for (Node e : toBeMoved) {
            element.removeChild(e);
            newElement.appendChild(e);
        }
        return newElement;
    }

    private static Element createElement(final Document document,
            final String elementName) {
        final String prefix = getPrefixOfQName(elementName);// .replaceAll("(:.*)|([^:])*", "");
        final String namespaceURI = prefix.isEmpty() ? null : document
                .lookupNamespaceURI(prefix);

        final Element element;
        if (namespaceURI == null) {
            element = document.createElement(elementName);
        } else {
            element = document.createElementNS(namespaceURI, elementName);
        }

        return element;
    }

    /**
     * @param elementName
     * @return
     */
    private static String getPrefixOfQName(final String elementName) {
        if (elementName.contains(":")) {
            return elementName.replaceAll(":.*", "");
        }
        return "";
    }
}

Related Tutorials