Here you can find the source of copyNamespaces(Node source, Node target)
Parameter | Description |
---|---|
source | the source node |
target | the target node |
public static void copyNamespaces(Node source, Node target)
//package com.java2s; /*/* w w w . j a va 2 s. c om*/ * Fabric3 * Copyright (c) 2009-2013 Metaform Systems * * Fabric3 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version, with the * following exception: * * Linking this software statically or dynamically with other * modules is making a combined work based on this software. * Thus, the terms and conditions of the GNU General Public * License cover the whole combination. * * As a special exception, the copyright holders of this software * give you permission to link this software with independent * modules to produce an executable, regardless of the license * terms of these independent modules, and to copy and distribute * the resulting executable under terms of your choice, provided * that you also meet, for each linked independent module, the * terms and conditions of the license of that module. An * independent module is a module which is not derived from or * based on this software. If you modify this software, you may * extend this exception to your version of the software, but * you are not obligated to do so. If you do not wish to do so, * delete this exception statement from your version. * * Fabric3 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the * GNU General Public License along with Fabric3. * If not, see <http://www.gnu.org/licenses/>. */ import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; public class Main { /** * Copies namespace attributes from a source, recursing its parents, to target node. * * @param source the source node * @param target the target node */ public static void copyNamespaces(Node source, Node target) { if (!(target instanceof Element)) { return; } Element targetElement = (Element) target; Node parent = source.getParentNode(); while (parent != null) { copyNamespaces(parent, targetElement); parent = parent.getParentNode(); } NamedNodeMap attributes = source.getAttributes(); if (attributes == null || attributes.getLength() == 0) { // no attributes return; } for (int i = 0; i < attributes.getLength(); i++) { Node node = attributes.item(i); if (!(node instanceof Attr)) { continue; } Attr attr = (Attr) node; String prefix = attr.getPrefix(); // check the schema ns if ((prefix == null || prefix.length() == 0) && !"xmlns".equals(attr.getLocalName())) { // not a default namespace continue; } else if (!"xmlns".equals(prefix)) { // not a namespace declaration continue; } targetElement.setAttributeNS(attr.getNamespaceURI(), attr.getName(), attr.getNodeValue()); } } }