Beispiel #1
0
 public Tag[] select(String path, Tag mapping) {
   Vector<Object> v = new Vector<Object>();
   select(path, v, mapping);
   Tag[] result = new Tag[v.size()];
   v.copyInto(result);
   return result;
 }
Beispiel #2
0
  void select(String path, Vector<Object> results, Tag mapping) {
    if (path.startsWith("//")) {
      int i = path.indexOf('/', 2);
      String name = path.substring(2, i < 0 ? path.length() : i);

      for (Object o : content) {
        if (o instanceof Tag) {
          Tag child = (Tag) o;
          if (match(name, child, mapping)) results.add(child);
          child.select(path, results, mapping);
        }
      }
      return;
    }

    if (path.length() == 0) {
      results.addElement(this);
      return;
    }

    int i = path.indexOf("/");
    String elementName = path;
    String remainder = "";
    if (i > 0) {
      elementName = path.substring(0, i);
      remainder = path.substring(i + 1);
    }

    for (Object o : content) {
      if (o instanceof Tag) {
        Tag child = (Tag) o;
        if (child.getName().equals(elementName) || elementName.equals("*"))
          child.select(remainder, results, mapping);
      }
    }
  }