Class CmsHtmlTagRemoveFactory

java.lang.Object
org.htmlparser.PrototypicalNodeFactory
org.opencms.util.CmsHtmlTagRemoveFactory
All Implemented Interfaces:
Serializable, org.htmlparser.NodeFactory

public final class CmsHtmlTagRemoveFactory extends org.htmlparser.PrototypicalNodeFactory
A tag factory for htmlparser that is able to "remove tags".

Create an instance, add the Tag instances to remove and assign this factory to the Parser before starting a visit. A demo usage is shown in CmsTagReplaceParser.

The tags are not actually removed: They are linked in the document object model tree of the HTML that the parser generates. They just will not accept any NodeVisitor instances and therefore be invisible in any output a visitor will generate from the visited tree.

The decision whether a tag is removed can be controlled in two ways:

  1. addTagRemoval(Tag)

    The given tag will be removed ("invisible in the DOM").

  2. addTagPreserve(Tag)

    The given tag will be kept as-is. The following behaviour happens if this method is used:

    1. Once addTagPreserve(Tag) has been called all Tags that are not added to this method will be removed. We are in include mode then.
    2. The Tags provided to addTagRemoval(Tag) will only have the power to hide exactly the same tags that are given to addTagPreserve(Tag): Deny is stronger than allow.

Since:
6.1.8
See Also:
  • Field Summary

    Fields inherited from class org.htmlparser.PrototypicalNodeFactory

    mBlastocyst, mRemark, mTag, mText
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new factory with all tags registered.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    addTagPreserve(org.htmlparser.Tag tag)
    Add a tag that will be visible for NodeVisitor instances.
    boolean
    addTagRemoval(org.htmlparser.Tag tag)
    Add a tag that will be invisible for NodeVisitor instances.
    org.htmlparser.Tag
    createTagNode(org.htmlparser.lexer.Page arg0, int arg1, int arg2, Vector arg3)
     

    Methods inherited from class org.htmlparser.PrototypicalNodeFactory

    clear, createRemarkNode, createStringNode, get, getRemarkPrototype, getTagNames, getTagPrototype, getTextPrototype, put, registerTag, registerTags, remove, setRemarkPrototype, setTagPrototype, setTextPrototype, unregisterTag

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • addTagPreserve

      public boolean addTagPreserve(org.htmlparser.Tag tag)
      Add a tag that will be visible for NodeVisitor instances.

      Not only "this" tag will be visible but all parsed Tags that have the same name (case insensitive).

      The given tag will be kept as-is. The following behaviour happens if this method is used:

      1. Once addTagPreserve(Tag) has been called all Tags that are not added to this method will be removed. We are in include mode then.
      2. The Tags provided to addTagRemoval(Tag) will only have the power to hide exactly the same tags that are given to addTagPreserve(Tag): Deny is stronger than allow.

      Parameters:
      tag - the tag that will be visible for all NodeVisitor instances.
      Returns:
      true if the tag was added to the internal set of tags to keep, false if not (was contained before, has no name,...).
    • addTagRemoval

      public boolean addTagRemoval(org.htmlparser.Tag tag)
      Add a tag that will be invisible for NodeVisitor instances.

      Not only "this" tag will be invisible but all parsed Tags that have the same name (case insensitive).

      Parameters:
      tag - the tag that will be visible for all NodeVisitor instances.
      Returns:
      true if the tag was added to the internal set of tags to remove, false if not (was contained before, has no name,...).
    • createTagNode

      public org.htmlparser.Tag createTagNode(org.htmlparser.lexer.Page arg0, int arg1, int arg2, Vector arg3)
      Specified by:
      createTagNode in interface org.htmlparser.NodeFactory
      Overrides:
      createTagNode in class org.htmlparser.PrototypicalNodeFactory
      See Also:
      • PrototypicalNodeFactory.createTagNode(org.htmlparser.lexer.Page, int, int, java.util.Vector)