Java XML QName Get getElementQName(final Element el)

Here you can find the source of getElementQName(final Element el)

Description

get Element Q Name

License

Apache License

Declaration

public static QName getElementQName(final Element el) 

Method Source Code

//package com.java2s;
//License from project: Apache License 

import javax.xml.namespace.QName;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

public class Main {
    public static QName getElementQName(final Element el) {
        final String qualifiedName = el.getNodeName();
        return resolveQName(el, qualifiedName);
    }//  w  w w.ja  v  a 2 s.c  om

    public static QName resolveQName(final Element el, final String qualifiedName) {
        QName qname;
        String prefix = "";
        String namespaceURI = "";
        String localPart = qualifiedName;

        final int colIndex = qualifiedName.indexOf(":");
        if (colIndex > 0) {
            prefix = qualifiedName.substring(0, colIndex);
            localPart = qualifiedName.substring(colIndex + 1);

            if ("xmlns".equals(prefix)) {
                namespaceURI = "URI:XML_PREDEFINED_NAMESPACE";
            } else {
                Element nsElement = el;
                while (namespaceURI.equals("") && nsElement != null) {
                    namespaceURI = nsElement.getAttribute("xmlns:" + prefix);
                    if (namespaceURI.equals("")) {
                        nsElement = getParentElement(nsElement);
                    }
                }
            }
            if (namespaceURI.equals("")) {
                throw new IllegalArgumentException("Cannot find namespace uri for: " + qualifiedName);
            }
        }

        qname = new QName(namespaceURI, localPart, prefix);
        return qname;
    }

    public static Element getParentElement(final Node node) {
        final Node parent = node.getParentNode();
        return parent instanceof Element ? (Element) parent : null;
    }
}

Related

  1. getElementQName(Class type)
  2. getElementQName(Element element)
  3. getElementQName(Element xml)
  4. getElements(Node context, QName qname)
  5. getName(QName qName)
  6. getName(QName qname)
  7. getQName(@Nonnull final Element aElement)