org.htmlparser.nodes

Class AbstractNode

public abstract class AbstractNode extends Object implements Node, Serializable

The concrete base class for all types of nodes (tags, text remarks). This class provides basic functionality to hold the {@link Page}, the starting and ending position in the page, the parent and the list of {@link NodeList children}.
Field Summary
protected NodeListchildren
The children of this node.
protected PagemPage
The page this node came from.
protected intnodeBegin
The beginning position of the tag in the line
protected intnodeEnd
The ending position of the tag in the line
protected Nodeparent
The parent of this node.
Constructor Summary
AbstractNode(Page page, int start, int end)
Create an abstract node with the page positions given.
Method Summary
abstract voidaccept(NodeVisitor visitor)
Visit this node.
Objectclone()
Clone this object.
voidcollectInto(NodeList list, NodeFilter filter)
Collect this node and its child nodes (if-applicable) into the collectionList parameter, provided the node satisfies the filtering criteria.

This mechanism allows powerful filtering code to be written very easily, without bothering about collection of embedded tags separately. e.g. when we try to get all the links on a page, it is not possible to get it at the top-level, as many tags (like form tags), can contain links embedded in them.

voiddoSemanticAction()
Perform the meaning of this tag.
NodeListgetChildren()
Get the children of this node.
intgetEndPosition()
Gets the ending position of the node.
NodegetFirstChild()
Get the first child of this node.
NodegetLastChild()
Get the last child of this node.
NodegetNextSibling()
Get the next sibling to this node.
PagegetPage()
Get the page this node came from.
NodegetParent()
Get the parent of this node.
NodegetPreviousSibling()
Get the previous sibling to this node.
intgetStartPosition()
Gets the starting position of the node.
StringgetText()
Returns the text of the node.
voidsetChildren(NodeList children)
Set the children of this node.
voidsetEndPosition(int position)
Sets the ending position of the node.
voidsetPage(Page page)
Set the page this node came from.
voidsetParent(Node node)
Sets the parent of this node.
voidsetStartPosition(int position)
Sets the starting position of the node.
voidsetText(String text)
Sets the string contents of the node.
StringtoHtml()
Return the HTML for this node.
abstract StringtoHtml(boolean verbatim)
Return the HTML for this node.
abstract StringtoPlainTextString()
Returns a string representation of the node.
abstract StringtoString()
Return a string representation of the node.

Field Detail

children

protected NodeList children
The children of this node.

mPage

protected Page mPage
The page this node came from.

nodeBegin

protected int nodeBegin
The beginning position of the tag in the line

nodeEnd

protected int nodeEnd
The ending position of the tag in the line

parent

protected Node parent
The parent of this node.

Constructor Detail

AbstractNode

public AbstractNode(Page page, int start, int end)
Create an abstract node with the page positions given. Remember the page and start & end cursor positions.

Parameters: page The page this tag was read from. start The starting offset of this node within the page. end The ending offset of this node within the page.

Method Detail

accept

public abstract void accept(NodeVisitor visitor)
Visit this node.

Parameters: visitor The visitor that is visiting this node.

clone

public Object clone()
Clone this object. Exposes java.lang.Object clone as a public method.

Returns: A clone of this object.

Throws: CloneNotSupportedException This shouldn't be thrown since the {@link Node} interface extends Cloneable.

collectInto

public void collectInto(NodeList list, NodeFilter filter)
Collect this node and its child nodes (if-applicable) into the collectionList parameter, provided the node satisfies the filtering criteria.

This mechanism allows powerful filtering code to be written very easily, without bothering about collection of embedded tags separately. e.g. when we try to get all the links on a page, it is not possible to get it at the top-level, as many tags (like form tags), can contain links embedded in them. We could get the links out by checking if the current node is a {@link org.htmlparser.tags.CompositeTag}, and going through its children. So this method provides a convenient way to do this.

Using collectInto(), programs get a lot shorter. Now, the code to extract all links from a page would look like:

 NodeList collectionList = new NodeList();
 NodeFilter filter = new TagNameFilter ("A");
 for (NodeIterator e = parser.elements(); e.hasMoreNodes();)
      e.nextNode().collectInto(collectionList, filter);
 
Thus, collectionList will hold all the link nodes, irrespective of how deep the links are embedded.

Another way to accomplish the same objective is:

 NodeList collectionList = new NodeList();
 NodeFilter filter = new TagClassFilter (LinkTag.class);
 for (NodeIterator e = parser.elements(); e.hasMoreNodes();)
      e.nextNode().collectInto(collectionList, filter);
 
This is slightly less specific because the LinkTag class may be registered for more than one node name, e.g. <LINK> tags too.

Parameters: list The node list to collect acceptable nodes into. filter The filter to determine which nodes are retained.

doSemanticAction

public void doSemanticAction()
Perform the meaning of this tag. The default action is to do nothing.

Throws: ParserException Not used. Provides for subclasses that may want to indicate an exceptional condition.

getChildren

public NodeList getChildren()
Get the children of this node.

Returns: The list of children contained by this node, if it's been set, null otherwise.

getEndPosition

public int getEndPosition()
Gets the ending position of the node.

Returns: The end position.

getFirstChild

public Node getFirstChild()
Get the first child of this node.

Returns: The first child in the list of children contained by this node, null otherwise.

getLastChild

public Node getLastChild()
Get the last child of this node.

Returns: The last child in the list of children contained by this node, null otherwise.

getNextSibling

public Node getNextSibling()
Get the next sibling to this node.

Returns: The next sibling to this node if one exists, null otherwise.

getPage

public Page getPage()
Get the page this node came from.

Returns: The page that supplied this node.

getParent

public Node getParent()
Get the parent of this node. This will always return null when parsing without scanners, i.e. if semantic parsing was not performed. The object returned from this method can be safely cast to a CompositeTag.

Returns: The parent of this node, if it's been set, null otherwise.

getPreviousSibling

public Node getPreviousSibling()
Get the previous sibling to this node.

Returns: The previous sibling to this node if one exists, null otherwise.

getStartPosition

public int getStartPosition()
Gets the starting position of the node.

Returns: The start position.

getText

public String getText()
Returns the text of the node.

Returns: The text of this node. The default is null.

setChildren

public void setChildren(NodeList children)
Set the children of this node.

Parameters: children The new list of children this node contains.

setEndPosition

public void setEndPosition(int position)
Sets the ending position of the node.

Parameters: position The new end position.

setPage

public void setPage(Page page)
Set the page this node came from.

Parameters: page The page that supplied this node.

setParent

public void setParent(Node node)
Sets the parent of this node.

Parameters: node The node that contains this node. Must be a CompositeTag.

setStartPosition

public void setStartPosition(int position)
Sets the starting position of the node.

Parameters: position The new start position.

setText

public void setText(String text)
Sets the string contents of the node.

Parameters: text The new text for the node.

toHtml

public String toHtml()
Return the HTML for this node. This should be the sequence of characters that were encountered by the parser that caused this node to be created. Where this breaks down is where broken nodes (tags and remarks) have been encountered and fixed. Applications reproducing html can use this method on nodes which are to be used or transferred as they were received or created.

Returns: The sequence of characters that would cause this node to be returned by the parser or lexer.

toHtml

public abstract String toHtml(boolean verbatim)
Return the HTML for this node. This should be the exact sequence of characters that were encountered by the parser that caused this node to be created. Where this breaks down is where broken nodes (tags and remarks) have been encountered and fixed. Applications reproducing html can use this method on nodes which are to be used or transferred as they were received or created.

Parameters: verbatim If true return as close to the original page text as possible.

Returns: The (exact) sequence of characters that would cause this node to be returned by the parser or lexer.

toPlainTextString

public abstract String toPlainTextString()
Returns a string representation of the node. It allows a simple string transformation of a web page, regardless of node type.
Typical application code (for extracting only the text from a web page) would then be simplified to:
 Node node;
 for (Enumeration e = parser.elements (); e.hasMoreElements (); )
 {
     node = (Node)e.nextElement();
     System.out.println (node.toPlainTextString ());
     // or do whatever processing you wish with the plain text string
 }
 

Returns: The 'browser' content of this node.

toString

public abstract String toString()
Return a string representation of the node. Subclasses must define this method, and this is typically to be used in the manner
System.out.println(node)

Returns: A textual representation of the node suitable for debugging

HTML Parser is an open source library released under LGPL. SourceForge.net