Java XML Node Text Value getNodeTexts(Node node, String... nodePath)

Here you can find the source of getNodeTexts(Node node, String... nodePath)

Description

get Node Texts

License

Open Source License

Declaration

public static List<String> getNodeTexts(Node node, String... nodePath) 

Method Source Code

//package com.java2s;
import org.w3c.dom.*;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

public class Main {
    public static List<String> getNodeTexts(Node node, String... nodePath) {
        List<Node> nodes = getNodes(node, nodePath);
        if (nodes != null) {
            List<String> strs = new ArrayList<>(nodes.size());
            for (Node n : nodes) {
                strs.add(n.getTextContent());
            }//from   ww w  .j  a  v  a 2s.  c  om
            return strs;
        } else {
            return null;
        }
    }

    public static List<Node> getNodes(Node node, Pattern... nodePath) {
        List<Node> res = new ArrayList<>();
        getMatchingNodes(node, nodePath, 0, res);
        return res;
    }

    public static List<Node> getNodes(Node node, String... nodePath) {
        List<Node> res = new ArrayList<>();
        getMatchingNodes(node, nodePath, 0, res);
        return res;
    }

    private static void getMatchingNodes(Node node, Pattern[] nodePath,
            int cur, List<Node> res) {
        if (cur < 0 || cur >= nodePath.length)
            return;
        boolean last = (cur == nodePath.length - 1);
        Pattern pattern = nodePath[cur];
        NodeList children = node.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node c = children.item(i);
            if (pattern.matcher(c.getNodeName()).matches()) {
                if (last) {
                    res.add(c);
                } else {
                    getMatchingNodes(c, nodePath, cur + 1, res);
                }
            }
        }
    }

    private static void getMatchingNodes(Node node, String[] nodePath,
            int cur, List<Node> res) {
        if (cur < 0 || cur >= nodePath.length)
            return;
        boolean last = (cur == nodePath.length - 1);
        String name = nodePath[cur];
        if (node.hasChildNodes()) {
            NodeList children = node.getChildNodes();
            for (int i = 0; i < children.getLength(); i++) {
                Node c = children.item(i);
                if (name.equals(c.getNodeName())) {
                    if (last) {
                        res.add(c);
                    } else {
                        getMatchingNodes(c, nodePath, cur + 1, res);
                    }
                }
            }
        }
    }
}

Related

  1. getNodeText(Node node)
  2. getNodeText(Node node)
  3. getNodeText(Node t)
  4. getNodeText(org.w3c.dom.Node node)
  5. getNodeTextContent(Node node, String node_name)
  6. getNodeTextValue(final Node node)
  7. getNodeTextValue(final Node node)
  8. getNodeTextValue(Node node)
  9. getNodeTextValue(Node node)