Java XML QName Get getQNameForNode(Node node)

Here you can find the source of getQNameForNode(Node node)

Description

Returns the qualified name of the given DOM Node.

License

Apache License

Parameter

Parameter Description
node the node

Return

the qualified name of the node

Declaration

public static QName getQNameForNode(Node node) 

Method Source Code


//package com.java2s;
/*//from   w w w.  j a  v a 2 s. co  m
 * Copyright 2005-2010 the original author or authors.
 *
 * 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.
 */

import javax.xml.namespace.QName;
import org.w3c.dom.Node;

public class Main {
    /** Indicates whether {@link QName} has a prefix. The first release of the class did not have this. */
    private static boolean qNameHasPrefix;

    /**
     * Returns the qualified name of the given DOM Node.
     *
     * @param node the node
     * @return the qualified name of the node
     */
    public static QName getQNameForNode(Node node) {
        if (node.getNamespaceURI() != null && node.getPrefix() != null && node.getLocalName() != null) {
            return createQName(node.getNamespaceURI(), node.getLocalName(), node.getPrefix());
        } else if (node.getNamespaceURI() != null && node.getLocalName() != null) {
            return new QName(node.getNamespaceURI(), node.getLocalName());
        } else if (node.getLocalName() != null) {
            return new QName(node.getLocalName());
        } else {
            // as a last resort, use the node name
            return new QName(node.getNodeName());
        }
    }

    /**
     * Returns the prefix of the given <code>QName</code>. Returns the prefix if available, i.e. if the
     * <code>QName.getPrefix()</code> method can be found. If this method is not available (as is the case on older
     * implementations of JAX-RPC), an empty string is returned.
     *
     * @param qName the <code>QName</code> to return the prefix from
     * @return the prefix, if available, or an empty string
     * @see javax.xml.namespace.QName#getPrefix()
     */
    public static String getPrefix(QName qName) {
        return qNameHasPrefix ? qName.getPrefix() : "";
    }

    /**
     * Creates a new <code>QName</code> with the given parameters. Sets the prefix if possible, i.e. if the
     * <code>QName(String, String, String)</code> constructor can be found. If this constructor is not available (as is
     * the case on older implementations of JAX-RPC), the prefix is ignored.
     *
     * @param namespaceUri namespace URI of the <code>QName</code>
     * @param localPart    local part of the <code>QName</code>
     * @param prefix       prefix of the <code>QName</code>. May be ignored.
     * @return the created <code>QName</code>
     * @see QName#QName(String,String,String)
     */
    public static QName createQName(String namespaceUri, String localPart, String prefix) {
        if (qNameHasPrefix) {
            return new QName(namespaceUri, localPart, prefix);
        } else {
            return new QName(namespaceUri, localPart);
        }
    }
}

Related

  1. getQName(String value, Node node)
  2. getQNameAttribute(Map attributes, QName qName)
  3. getQNameAttribute(Node n, String namespace, String attributeName)
  4. getQNameComparator()
  5. getQNameConstant(QName name)
  6. getQNameFromSerialzedForm(String qNameAsString)
  7. getQNameFromString(Element element, String qnameAsString)
  8. getQNameFromString(Object obj)
  9. getQNameHashCode(QName aQName)