Java XML Element Get from Parent getFirstNode(final Node parent, final String... path)

Here you can find the source of getFirstNode(final Node parent, final String... path)

Description

get First Node

License

Open Source License

Declaration

final public static Node getFirstNode(final Node parent, final String... path) 

Method Source Code

//package com.java2s;
/**   /*w  w w.  j  a  va2 s  . co m*/
 * License Agreement for OpenSearchServer
 *
 * Copyright (C) 2008-2013 Emmanuel Keller / Jaeksoft
 * 
 * http://www.open-search-server.com
 * 
 * This file is part of OpenSearchServer.
 *
 * OpenSearchServer is free software: you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 * OpenSearchServer 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 General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSearchServer. 
 *  If not, see <http://www.gnu.org/licenses/>.
 **/

import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    final public static Node getFirstNode(final Node parent, final String... path) {
        List<Node> nodes = getNodes(parent, path);
        if (nodes == null)
            return null;
        if (nodes.size() == 0)
            return null;
        return nodes.get(0);
    }

    final private static void getNodes(final Node parent, final int pos, final String[] path,
            final List<Node> nodes) {
        if (pos == path.length) {
            nodes.add(parent);
            return;
        }
        NodeList childrens = parent.getChildNodes();
        int l = childrens.getLength();
        int nextPos = pos + 1;
        for (int i = 0; i < l; i++) {
            Node node = childrens.item(i);
            switch (node.getNodeType()) {
            case Node.ELEMENT_NODE:
                if (node.getNodeName().equals(path[pos]))
                    getNodes(node, nextPos, path, nodes);
                break;
            default:
                continue;
            }
        }
    }

    final public static void getNodes(final List<Node> nodes, final Node parent, final String... path) {
        if (path == null)
            return;
        if (path.length == 0)
            return;
        getNodes(parent, 0, path, nodes);
    }

    final public static List<Node> getNodes(final Node parent, final String... path) {
        if (path == null)
            return null;
        if (path.length == 0)
            return null;
        List<Node> nodes = new ArrayList<Node>();
        getNodes(nodes, parent, path);
        return nodes;
    }
}

Related

  1. getElements(Document document, Element parent)
  2. getElementStringValue(Document document, Element parent, String element)
  3. getElementValueByTagName(Document doc, String parentName, String eleName)
  4. getFirstElement(Node parent)
  5. getFirstElement(Node parent)
  6. getNamedElemValue(Element parent, String elementName)
  7. getNamedNodeList(Element parent, String containerTagName)
  8. getNamespacePrefix(Node parentNode, String preferredPrefix, String nsUri)
  9. getNameToFirstNode(Node parent, String node_name)