Java tutorial
//package com.java2s; /** * Copyright (C) 2014-2017 Philip Helger (www.helger.com) * philip[at]helger[dot]com * * 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.annotation.Nonnull; import javax.annotation.Nullable; import javax.xml.XMLConstants; import javax.xml.namespace.QName; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; public class Main { /** * Get the QName of the passed element. If the passed element has no namespace * URI, only the tag name is used. Otherwise namespace URI, local name and * prefix are used. * * @param aElement * The element to be used. May not be <code>null</code>. * @return The created {@link QName}. * @since 8.4.1 */ @Nonnull public static QName getQName(@Nonnull final Element aElement) { final String sNamespaceURI = aElement.getNamespaceURI(); if (sNamespaceURI == null) return new QName(aElement.getTagName()); return new QName(sNamespaceURI, aElement.getLocalName(), getPrefix(aElement)); } @Nullable public static String getNamespaceURI(@Nullable final Node aNode) { if (aNode instanceof Document) { // Recurse into document element return getNamespaceURI(((Document) aNode).getDocumentElement()); } if (aNode != null) return aNode.getNamespaceURI(); return null; } /** * Get the namespace prefix of the passed element in a safe way. * * @param aElement * The element to be queried. May be <code>null</code>. * @return {@link XMLConstants#DEFAULT_NS_PREFIX} or the provided prefix. * Never <code>null</code>. * @since 8.4.1 */ @Nonnull public static String getPrefix(@Nullable final Element aElement) { final String sPrefix = aElement == null ? null : aElement.getPrefix(); return sPrefix == null ? XMLConstants.DEFAULT_NS_PREFIX : sPrefix; } @Nullable public static Element getDocumentElement(@Nullable final Node aNode) { final Document aDoc = getOwnerDocument(aNode); return aDoc == null ? null : aDoc.getDocumentElement(); } /** * Get the owner document of the passed node. If the node itself is a * document, only a cast is performed. * * @param aNode * The node to get the document from. May be <code>null</code>. * @return <code>null</code> if the passed node was <code>null</code>. */ @Nullable public static Document getOwnerDocument(@Nullable final Node aNode) { return aNode == null ? null : aNode instanceof Document ? (Document) aNode : aNode.getOwnerDocument(); } }