Creates a QName instance from the given namespace context for the given qualifiedName : Namespace « XML « Java






Creates a QName instance from the given namespace context for the given qualifiedName

  

import javax.xml.namespace.QName;

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

public class Utils {
  /**
   * Creates a QName instance from the given namespace context for the given qualifiedName
   *
   * @param element       the element to use as the namespace context
   * @param qualifiedName the fully qualified name
   * @return the QName which matches the qualifiedName
   */
  public static QName createQName(Element element, String qualifiedName) {
      int index = qualifiedName.indexOf(':');
      if (index >= 0) {
          String prefix = qualifiedName.substring(0, index);
          String localName = qualifiedName.substring(index + 1);
          String uri = recursiveGetAttributeValue(element, "xmlns:" + prefix);
          return new QName(uri, localName, prefix);
      } else {
          String uri = recursiveGetAttributeValue(element, "xmlns");
          if (uri != null) {
              return new QName(uri, qualifiedName);
          }
          return new QName(qualifiedName);
      }
  }
  /**
   * Recursive method to find a given attribute value
   */
  public static String recursiveGetAttributeValue(Element element, String attributeName) {
      String answer = null;
      try {
          answer = element.getAttribute(attributeName);
      } catch (Exception e) {
    
      }
      if (answer == null || answer.length() == 0) {
          Node parentNode = element.getParentNode();
          if (parentNode instanceof Element) {
              return recursiveGetAttributeValue((Element) parentNode, attributeName);
          }
      }
      return answer;
  }
}

   
    
  








Related examples in the same category

1.Namespace Attribute Event Output
2.Namespace Attribute Event Output 1
3.Attribute with Namespace
4.Start element with namespace
5.Handling namespaces during parsing
6.Access elements from document with namespaces
7.Checks whether the supplied String is an NCName (Namespace Classified Name)
8.Set a namespace/prefix on an element if it is not set already.
9.Add a namespace prefix definition to an element.
10.Get all prefixes defined on this element for the specified namespace.
11.Get all prefixes defined, up to the root, for a namespace URI.
12.Create Namespace
13.Starting from a node, find the namespace declaration for a prefix.
14.Build a QName from the element name