Пример #1
0
 private static void scanElementTag(DefaultNodeVisitor visitor, TagNode node) {
   if (!node.isEndElement()) {
     visitor.startElement(node);
   }
   if (node.isEndElement() || node.hasEnd()) {
     visitor.endElement(node);
   }
 }
Пример #2
0
 /**
  * Scan a single element and send appropriate event: start element, end element, characters,
  * comment, expression or directive.
  */
 private void scanElement(DefaultNodeVisitor visitor, Node node) {
   switch (node.getNodeType()) {
     case TAG:
       scanElementTag(visitor, (TagNode) node);
       break;
     case TEXT:
       visitor.characters((TextNode) node);
       break;
     case COMMENT:
       visitor.comment((CommentNode) node);
       break;
     case EXPRESSION:
       visitor.expression((ExpressionNode) node);
       break;
     case DIRECTIVE:
       visitor.directive((DirectiveNode) node);
       break;
     default:
       break;
   }
 }
Пример #3
0
  private void scan(
      List<Node> nodeList,
      WebSourceCode webSourceCode,
      Charset charset,
      List<DefaultNodeVisitor> visitors) {
    // prepare the visitors
    for (DefaultNodeVisitor visitor : visitors) {
      visitor.setSourceCode(webSourceCode);

      if (visitor instanceof CharsetAwareVisitor) {
        ((CharsetAwareVisitor) visitor).setCharset(charset);
      }
    }

    // notify visitors for a new document
    for (DefaultNodeVisitor visitor : visitors) {
      visitor.startDocument(nodeList);
    }

    // notify the visitors for start and end of element
    for (Node node : nodeList) {
      for (DefaultNodeVisitor visitor : visitors) {
        scanElement(visitor, node);
      }
    }

    // notify visitors for end of document
    for (DefaultNodeVisitor visitor : visitors) {
      visitor.endDocument();
    }
  }
Пример #4
0
 /** Add a visitor to the list of visitors. */
 public void addVisitor(DefaultNodeVisitor visitor) {
   checkVisitors.add(visitor);
   visitor.init();
 }