Mega Code Archive

 
Categories / Java Tutorial / XML
 

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;   } }