Java XML Attribute Get getAttributes(final Element el)

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

Description

get Attributes

License

Apache License

Declaration

public static Map<QName, String> getAttributes(final Element el) 

Method Source Code

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

import java.util.HashMap;

import java.util.Map;
import javax.xml.namespace.QName;

import org.w3c.dom.Attr;

import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

public class Main {
    public static Map<QName, String> getAttributes(final Element el) {
        final Map<QName, String> attmap = new HashMap<QName, String>();
        final NamedNodeMap attribs = el.getAttributes();
        for (int i = 0; i < attribs.getLength(); i++) {
            final Attr attr = (Attr) attribs.item(i);
            final String name = attr.getName();
            final QName qname = resolveQName(el, name);
            final String value = attr.getNodeValue();
            attmap.put(qname, value);/*from ww w. j a va2 s.  c  om*/
        }
        return attmap;
    }

    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. getAttributes(Element el)
  2. getAttributes(Element el)
  3. getAttributes(Element element)
  4. getAttributes(Element element)
  5. getAttributes(Element root, String elementName, String[] wantedAttributes)
  6. getAttributes(final Element element)
  7. getAttributes(final Node node, final String[] attributeNames)
  8. getAttributes(Node element)
  9. getAttributes(Node n)