Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright 1997-2015 Unidata Program Center/University Corporation for Atmospheric Research
 * Copyright 2010-2015 Jeff McWhirter
 * 
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or (at
 * your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 * 
 */

import org.w3c.dom.*;

import java.util.ArrayList;

import java.util.List;

public class Main {
    /**
     *  Find the first  descendant element of the given parent Node
     *  whose tag name.equals the given tag.
     *
     *  @param parent The root of the xml dom tree to search.
     *  @param tag The tag name to match.
     *  @return The element foudn or null
     */
    public static Element findDescendant(Node parent, String tag) {
        ArrayList found = new ArrayList();
        findDescendants(parent, tag, found);
        if (found.size() == 0) {
            return null;
        }
        return (Element) found.get(0);
    }

    /**
     *  Find all of the  descendant elements of the given parent Node
     *  whose tag name.equals the given tag.
     *
     *  @param parent The root of the xml dom tree to search.
     *  @param tag The tag name to match.
     *  @return The list of descendants that match the given tag.
     */
    public static List findDescendants(Node parent, String tag) {
        ArrayList found = new ArrayList();
        findDescendants(parent, tag, found);
        return found;
    }

    /**
     *  Find all of the  descendant elements of the given parent Node
     *  whose tag name equals the given tag.
     *
     *  @param parent The root of the xml dom tree to search.
     *  @param tag The tag name to match.
     *  @param found The list of descendants that match the given tag.
     */
    private static void findDescendants(Node parent, String tag, List found) {
        if (getNodeName(parent).equals(tag)) {
            found.add(parent);
        }
        NodeList children = parent.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node child = children.item(i);
            findDescendants(child, tag, found);
        }
    }

    /**
     * Get the non qualified tag name
     *
     * @param node node
     *
     * @return node name
     */
    public static String getNodeName(Node node) {
        String localName = node.getLocalName();
        if (localName != null) {
            return localName;
        }
        String name = node.getNodeName();
        int idx = name.indexOf(":");
        if (idx >= 0) {
            name = name.substring(idx + 1);
        }
        return name;
    }

    /**
     * Get the non qualified tag name
     *
     * @param element element
     *
     * @return tag name
     */
    public static String getLocalName(Node element) {
        String localName = element.getLocalName();
        if (localName != null) {
            return localName;
        }
        String name = element.getNodeName();
        int idx = name.indexOf(":");
        if (idx >= 0) {
            name = name.substring(idx + 1);
        }
        return name;
    }
}