Java examples for XML:XML Node
list a set of XML node that match a specific filter.
/*/*from w ww . j a v a2 s. c o m*/ * 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 * * 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 java.util.Vector; import org.w3c.dom.Attr; import org.w3c.dom.CDATASection; import org.w3c.dom.Comment; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.ProcessingInstruction; import org.w3c.dom.Text; public class Main{ /** * list a set of node that match a specific filter. The list can be made * recursively or not. * @param parent the parent node to search from * @param filter the filter that children should match. * @param recurse <tt>true</tt> if you want the list to be made recursively * otherwise <tt>false</tt>. * @return the node list that matches the filter. */ public static NodeList listChildNodes(Node parent, NodeFilter filter, boolean recurse) { NodeListImpl matches = new NodeListImpl(); NodeList children = parent.getChildNodes(); if (children != null) { final int len = children.getLength(); for (int i = 0; i < len; i++) { Node child = children.item(i); if (filter.accept(child)) { matches.addElement(child); } if (recurse) { NodeList recmatches = listChildNodes(child, filter, recurse); final int reclength = recmatches.getLength(); for (int j = 0; j < reclength; j++) { matches.addElement(recmatches.item(i)); } } } } return matches; } }