Java examples for XML:DOM Element
Get namespace declarations of specified XML element.
/******************************************************************************* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * //from w ww.j a va2 s .c o m * 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. * *******************************************************************************/ //package com.java2s; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; public class Main { private static final String XMLNS_PREFIX = "xmlns"; private static final String XMLNS_PREFIX_COLON = XMLNS_PREFIX + ':'; private static final int XMLNS_PREFIX_COLON_LENGTH = XMLNS_PREFIX_COLON .length(); /** * Get namespace declarations of specified element. Any 'inherited' * declarations are NOT present. * * @param element element to get namespaces from * @param parentPrefixes parent prefixes (the default values) * @return map of namespaces (prefix -> namespace) */ public static Map<String, String> getDeclaredPrefixes(Element element, Map<String, String> parentPrefixes) { Map<String, String> ret = new TreeMap<String, String>( parentPrefixes); // default namespace if (element.getNamespaceURI() != null) { ret.put("", element.getNamespaceURI()); //$NON-NLS-1$ } // other namespaces NamedNodeMap attrs = element.getAttributes(); for (int i = 0; i < attrs.getLength(); i++) { Attr attr = (Attr) attrs.item(i); String attrName = attr.getName(); if (attrName.startsWith(XMLNS_PREFIX_COLON)) { ret.put(attrName.substring(XMLNS_PREFIX_COLON_LENGTH), attr.getValue()); } // if(attrName.equals(XMLNS_PREFIX)) { // // default namespace // ret.put("", attr.getValue()); // } } return ret; } /** * Get attributes without namespace declarations of specified element. * * @param element element to get namespaces from * @return map of attributes (name -> value) */ public static Map<String, String> getAttributes(Element element) { Map<String, String> ret = new HashMap<String, String>(); NamedNodeMap attrs = element.getAttributes(); for (int i = 0; i < attrs.getLength(); i++) { Attr attr = (Attr) attrs.item(i); String attrName = attr.getName(); if (!attrName.startsWith(XMLNS_PREFIX_COLON) && !attrName.equals(XMLNS_PREFIX)) { ret.put(attrName, attr.getValue()); } } return ret; } }