Package Torello.HTML
Class PageStats
- java.lang.Object
-
- Torello.HTML.PageStats
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.lang.Comparable<PageStats>
public class PageStats extends java.lang.Object implements java.io.Serializable, java.lang.Comparable<PageStats>, java.lang.Cloneable
Computes miscellaneous statistics for a web-page, or sub-page.
The original intention of this class was to have a simple way of "page-equality checking." Sometimes downloading from aURL
will return an HTML page that has changed. This class does some common statistics/features calculations about the page - count the number of nodes (for instance), and count common node-occurrences like the presence of both opening and closing HTML tags (this is sometimes thought of as 'well-formed HTML').
It will also do a complete java.lang.String hash-code on the entire page, so it is almost 100% likely that aPageStats
instance is a unique-identifier of the actual HTML page. Also, there is some basic information available in the class which may (or may not) be of use to a programmer.
Note about Use:
When this class is converted to a String - using:StringParse.objToStr(instance);
- the java-string that is generated could be used as a "Unique Identifier" (similar to a Primary Key in a DataBase) to guarantee that two pages, when compared, are either identical or are different.
This could avoid the lengthy process of checking whether each and every string in each and everHTMLNode
were exactly equal. Mostly, because one of the statistics collected is a hash-code that hashes the page as as if it were a single string - the likelihood that using thepublic boolean 'equals(Object o)'
method that's included in theclass PageStats
makes the chance of making an 'equality mistake' extremely, extremely low.
IMPORTANT:
The number of features that are polled or 'counted' when building an instance of this class creates enough pieces of information, 'data', to suite more than just the original purposes of the classPageStats.
As mentioned, this module was written to help detect "page-equality" when downloading pages from similar or identical URL's. Hopefully, it is obvious that the list of statistics available when creating an instance of this class might be useful for many general purpose uses - besides equality checking.
Each of the individual fields in an instance ofPageStats
are allpublic
&final
fields. This does also mean that if a vectorized-html web-page is modified, the constructor to this class needs to generate an entire new instance of the class.- See Also:
- Serialized Form
Hi-Lited Source-Code:- View Here: Torello/HTML/PageStats.java
- Open New Browser-Tab: Torello/HTML/PageStats.java
File Size: 45,186 Bytes Line Count: 996 '\n' Characters Found
-
-
Field Summary
Serializable ID Modifier and Type Field static long
serialVersionUID
General Fields Modifier and Type Field int
hash
int
numCommentNodes
int
numNewLines
int
numNodes
int
numTagNodes
int
numTextNodes
int
strLength
Opening TagNode Elements, Count Modifier and Type Field short
numOpenAnchors
short
numOpenDivs
short
numOpenForms
short
numOpenFrames
short
numOpenIFrames
short
numOpenParagraphs
short
numOpenScripts
short
numOpenSpans
short
numOpenStyles
short
numOpenTables
Closing TagNode Elements, Count Modifier and Type Field short
numClosedAnchors
short
numClosedDivs
short
numClosedForms
short
numClosedFrames
short
numClosedIFrames
short
numClosedParagraphs
short
numClosedScripts
short
numClosedSpans
short
numClosedStyles
short
numClosedTables
Singleton TagNode Elements, Count Modifier and Type Field short
numBR
short
numEmbed
short
numHR
short
numImages
short
numInput
short
numLink
short
numMeta
HTML Attributes, Count Modifier and Type Field short
hasAVaccept
short
hasAValt
short
hasAVclass
short
hasAVcols
short
hasAVcolspan
short
hasAVheight
short
hasAVhref
short
hasAVhreflang
short
hasAVid
short
hasAVmax
short
hasAVmaxlength
short
hasAVmin
short
hasAVminlength
short
hasAVname
short
hasAVrows
short
hasAVrowspan
short
hasAVsize
short
hasAVsizes
short
hasAVsrc
short
hasAVsrcdoc
short
hasAVsrclang
short
hasAVsrcset
short
hasAVstyle
short
hasAVtarget
short
hasAVtitle
short
hasAVtype
short
hasAVvalue
short
hasAVwidth
short
hasAVwrap
-
Method Summary
Methods: Base-64 String Object Serialization Modifier and Type Method static PageStats
fromB64String(String minimized)
String
toB64String()
Methods: class java.lang.Object Modifier and Type Method boolean
equals(Object o)
int
hashCode()
String
toString()
Methods: interface java.lang.Cloneable Modifier and Type Method PageStats
clone()
Methods: interface java.lang.Comparable Modifier and Type Method int
compareTo(PageStats other)
-
-
-
Field Detail
-
serialVersionUID
public static final long serialVersionUID
This fulfils the SerialVersion UID requirement for all classes that implement Java'sinterface java.io.Serializable
. Using theSerializable
Implementation offered by java is very easy, and can make saving program state when debugging a lot easier. It can also be used in place of more complicated systems like "hibernate" to store data as well.- See Also:
- Constant Field Values
- Code:
- Exact Field Declaration Expression:
public static final long serialVersionUID = 1;
-
strLength
public final int strLength
If a Vectorized HTML page were converted to a String, this would be the length of that string.- See Also:
Util.strLength(Vector)
,Util.strLength(Vector, int, int)
- Code:
- Exact Field Declaration Expression:
public final int strLength;
-
hash
public final int hash
The string hash-code of the vectorized-HTML webpage, as if it were being represented as one singlejava.lang.String.
- See Also:
Util.hashCode(Vector)
,Util.hashCode(Vector, int, int)
- Code:
- Exact Field Declaration Expression:
public final int hash;
-
hasAVclass
public final short hasAVclass
The number of HTMLTagNode
elements that have a'class'
attribute, when queried usingTagNode.AV("class")
-
hasAVstyle
public final short hasAVstyle
The number of HTMLTagNode
elements that have a'style'
attribute, when queried usingTagNode.AV("style")
-
hasAVid
public final short hasAVid
The number of HTMLTagNode
elements that have an'id'
attribute, when queried usingTagNode.AV("id")
-
hasAVtitle
public final short hasAVtitle
The number of HTMLTagNode
elements that have a'title'
attribute, when queried usingTagNode.AV("title")
-
hasAVhref
public final short hasAVhref
The number of HTMLTagNode
elements that have an'href'
attribute, when queried usingTagNode.AV("href")
-
hasAVhreflang
public final short hasAVhreflang
The number of HTMLTagNode
elements that have a'hreflang'
attribute, when queried usingTagNode.AV("hreflang")
-
hasAVsrc
public final short hasAVsrc
The number of HTMLTagNode
elements that have a'src'
attribute, when queried usingTagNode.AV("src")
-
hasAVsrcset
public final short hasAVsrcset
The number of HTMLTagNode
elements that have a'srcset'
attribute, when queried usingTagNode.AV("srcset")
-
hasAVsrclang
public final short hasAVsrclang
The number of HTMLTagNode
elements that have a'srclang'
attribute, when queried usingTagNode.AV("srclang")
-
hasAVsrcdoc
public final short hasAVsrcdoc
The number of HTMLTagNode
elements that have a'srcdoc'
attribute, when queried usingTagNode.AV("srcdoc")
-
hasAValt
public final short hasAValt
The number of HTMLTagNode
elements that have an'alt'
attribute, when queried usingTagNode.AV("alt")
-
hasAVtarget
public final short hasAVtarget
The number of HTMLTagNode
elements that have a'target'
attribute, when queried usingTagNode.AV("target")
-
hasAVwidth
public final short hasAVwidth
The number of HTMLTagNode
elements that have a'width'
attribute, when queried usingTagNode.AV("width")
-
hasAVheight
public final short hasAVheight
The number of HTMLTagNode
elements that have a'height'
attribute, when queried usingTagNode.AV("height")
-
hasAVsize
public final short hasAVsize
The number of HTMLTagNode
elements that have a'size'
attribute, when queried usingTagNode.AV("size")
-
hasAVsizes
public final short hasAVsizes
The number of HTMLTagNode
elements that have a'sizes'
attribute, when queried usingTagNode.AV("sizes")
-
hasAVcols
public final short hasAVcols
The number of HTMLTagNode
elements that have a'cols'
attribute, when queried usingTagNode.AV("cols")
-
hasAVcolspan
public final short hasAVcolspan
The number of HTMLTagNode
elements that have a'colspan'
attribute, when queried usingTagNode.AV("colspan")
-
hasAVrows
public final short hasAVrows
The number of HTMLTagNode
elements that have a'rows'
attribute, when queried usingTagNode.AV("rows")
-
hasAVrowspan
public final short hasAVrowspan
The number of HTMLTagNode
elements that have a'rowspan'
attribute, when queried usingTagNode.AV("rowspan")
-
hasAVwrap
public final short hasAVwrap
The number of HTMLTagNode
elements that have a'wrap'
attribute, when queried usingTagNode.AV("wrap")
-
hasAVvalue
public final short hasAVvalue
The number of HTMLTagNode
elements that have a'value'
attribute, when queried usingTagNode.AV("value")
-
hasAVtype
public final short hasAVtype
The number of HTMLTagNode
elements that have a'type'
attribute, when queried usingTagNode.AV("type")
-
hasAVname
public final short hasAVname
The number of HTMLTagNode
elements that have a'name'
attribute, when queried usingTagNode.AV("name")
-
hasAVmin
public final short hasAVmin
The number of HTMLTagNode
elements that have a'min'
attribute, when queried usingTagNode.AV("min")
-
hasAVmax
public final short hasAVmax
The number of HTMLTagNode
elements that have a'max'
attribute, when queried usingTagNode.AV("max")
-
hasAVminlength
public final short hasAVminlength
The number of HTMLTagNode
elements that have a'minlength'
attribute, when queried usingTagNode.AV("minlength")
-
hasAVmaxlength
public final short hasAVmaxlength
The number of HTMLTagNode
elements that have a'maxlength'
attribute, when queried usingTagNode.AV("maxlength")
-
hasAVaccept
public final short hasAVaccept
The number of HTMLTagNode
elements that have a'accept'
attribute, when queried usingTagNode.AV("accept")
-
numNodes
public final int numNodes
This is identical to the value returned by:pageVector.size()
-
numTagNodes
public final int numTagNodes
The number ofHTMLNode's
in theVector<HTMLNode>
that qualify as an"instanceof" TagNode
.- See Also:
Util.Count.tagNodes(Vector)
,Util.Count.tagNodes(Vector, int, int)
- Code:
- Exact Field Declaration Expression:
public final int numTagNodes;
-
numTextNodes
public final int numTextNodes
The number ofHTMLNode's
in theVector<HTMLNode>
that qualify as an"instanceof" TextNode
.- See Also:
Util.Count.textNodes(Vector)
,Util.Count.textNodes(Vector, int, int)
- Code:
- Exact Field Declaration Expression:
public final int numTextNodes;
-
numCommentNodes
public final int numCommentNodes
The number ofHTMLNode's
in theVector<HTMLNode>
that qualify as an"instanceof" CommentNode
.- See Also:
Util.Count.commentNodes(Vector)
,Util.Count.commentNodes(Vector, int, int)
- Code:
- Exact Field Declaration Expression:
public final int numCommentNodes;
-
numNewLines
public final int numNewLines
This is the total number of new-line'\n'
characters found inside anyTextNode
present in the page-vector.- See Also:
Util.Count.newLines(Vector)
,Util.Count.newLines(Vector, int, int)
- Code:
- Exact Field Declaration Expression:
public final int numNewLines;
-
numImages
public final short numImages
The total number of HTML <IMG ...>'TagNode'
elements found on the page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numMeta
public final short numMeta
The total number of HTML <META ...>'TagNode'
elements found on the page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numLink
public final short numLink
The total number of HTML <LINK ...>'TagNode'
elements found on the page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numInput
public final short numInput
The total number of HTML <INPUT ...>'TagNode'
elements found on the page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numEmbed
public final short numEmbed
The total number of HTML <EMBED ...>'TagNode'
elements found on this page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numHR
public final short numHR
The total number of HTML <HR>'TagNode'
elements found on the page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numBR
public final short numBR
The total number of HTML <BR>'TagNode'
elements found on the page.
NOTE: This is considered an HTML-5'Singleton'
element, and thusly should only have an "Opening-Tag Version" of the Element. If there are (accidentally) closing-versions of this tag, they will not be counted byclass PageStats
-
numOpenTables
public final short numOpenTables
The total number of <TABLE>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedTables
public final short numClosedTables
The total number of </TABLE>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenAnchors
public final short numOpenAnchors
The total number of <A> (Anchor), TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedAnchors
public final short numClosedAnchors
The total number of </A>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenParagraphs
public final short numOpenParagraphs
The total number of <P> (Paragraph), TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedParagraphs
public final short numClosedParagraphs
The total number of </P>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenDivs
public final short numOpenDivs
The total number of <DIV> (Divider), TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedDivs
public final short numClosedDivs
The total number of </DIV>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenSpans
public final short numOpenSpans
The total number of <SPAN>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedSpans
public final short numClosedSpans
The total number of </SPAN>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenScripts
public final short numOpenScripts
The total number of <SCRIPT>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedScripts
public final short numClosedScripts
The total number of </SCRIPT>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenStyles
public final short numOpenStyles
The total number of <STYLE>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedStyles
public final short numClosedStyles
The total number of </STYLE>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenFrames
public final short numOpenFrames
The total number of <FRAME>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedFrames
public final short numClosedFrames
The total number of </FRAME>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenIFrames
public final short numOpenIFrames
The total number of <IFRAME>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedIFrames
public final short numClosedIFrames
The total number of </IFRAME>, TC.ClosingTags, TagNode elements found on the page.
-
numOpenForms
public final short numOpenForms
The total number of <FORM>, TC.OpeningTags, TagNode elements found on the page. Any element-internal attributes / inner-tags actually found inside the HTML element will just be ignored for the purposes of this count.
-
numClosedForms
public final short numClosedForms
The total number of </FORM>, TC.ClosingTags, TagNode elements found on the page.
-
-
Constructor Detail
-
PageStats
-
PageStats
public PageStats(java.util.Vector<HTMLNode> page)
Constructs a new instance of PageStats. Assigns values based on a vectorized-webpage to the individual fields in this class.- Parameters:
page
- Any HTML page or sub-page.- See Also:
Util.strLength(Vector)
,Util.hashCode(Vector)
,Util.Count.tagNodes(Vector)
,Util.Count.textNodes(Vector)
,Util.Count.commentNodes(Vector)
,Util.Count.newLines(Vector)
,TagNodeFindInclusive
,TagNodeCount
,TagNode.AV(String)
-
-
Method Detail
-
equals
public boolean equals(java.lang.Object o)
Java'spublic boolean equals(Object o)
requirements.- Overrides:
equals
in classjava.lang.Object
- Parameters:
o
- This may be any Java Object, but only ones of'this'
type whose internal-values are identical will cause this method to returnTRUE
.- Returns:
TRUE
if'this'
instance ofPageStats
is identical to parameter'o'.
- Code:
- Exact Method Body:
if (! (o instanceof PageStats)) return false; PageStats otherPageStats = (PageStats) o; return (this.strLength == otherPageStats.strLength) && (this.hash == otherPageStats.hash) && (this.numNodes == otherPageStats.numNodes) && (this.numTagNodes == otherPageStats.numTagNodes) && (this.numTextNodes == otherPageStats.numTextNodes) && (this.numCommentNodes == otherPageStats.numCommentNodes) && (this.numNewLines == otherPageStats.numNewLines) && (this.hasAVclass == otherPageStats.hasAVclass) && (this.hasAVstyle == otherPageStats.hasAVstyle) && (this.hasAVid == otherPageStats.hasAVid) && (this.hasAVtitle == otherPageStats.hasAVtitle) && (this.hasAVhref == otherPageStats.hasAVhref) && (this.hasAVhreflang == otherPageStats.hasAVhreflang) && (this.hasAVsrc == otherPageStats.hasAVsrc) && (this.hasAVsrcset == otherPageStats.hasAVsrcset) && (this.hasAVsrclang == otherPageStats.hasAVsrclang) && (this.hasAVsrcdoc == otherPageStats.hasAVsrcdoc) && (this.hasAValt == otherPageStats.hasAValt) && (this.hasAVtarget == otherPageStats.hasAVtarget) && (this.hasAVwidth == otherPageStats.hasAVwidth) && (this.hasAVheight == otherPageStats.hasAVheight) && (this.hasAVsize == otherPageStats.hasAVsize) && (this.hasAVsizes == otherPageStats.hasAVsizes) && (this.hasAVcols == otherPageStats.hasAVcols) && (this.hasAVcolspan == otherPageStats.hasAVcolspan) && (this.hasAVrows == otherPageStats.hasAVrows) && (this.hasAVrowspan == otherPageStats.hasAVrowspan) && (this.hasAVwrap == otherPageStats.hasAVwrap) && (this.hasAVvalue == otherPageStats.hasAVvalue) && (this.hasAVtype == otherPageStats.hasAVtype) && (this.hasAVname == otherPageStats.hasAVname) && (this.hasAVmin == otherPageStats.hasAVmin) && (this.hasAVmax == otherPageStats.hasAVmax) && (this.hasAVminlength == otherPageStats.hasAVminlength) && (this.hasAVmaxlength == otherPageStats.hasAVmaxlength) && (this.hasAVaccept == otherPageStats.hasAVaccept) && (this.numImages == otherPageStats.numImages) && (this.numMeta == otherPageStats.numMeta) && (this.numLink == otherPageStats.numLink) && (this.numInput == otherPageStats.numInput) && (this.numEmbed == otherPageStats.numEmbed) && (this.numHR == otherPageStats.numHR) && (this.numBR == otherPageStats.numBR) && (this.numOpenTables == otherPageStats.numOpenTables) && (this.numClosedTables == otherPageStats.numClosedTables) && (this.numOpenAnchors == otherPageStats.numOpenAnchors) && (this.numClosedAnchors == otherPageStats.numClosedAnchors) && (this.numOpenParagraphs == otherPageStats.numOpenParagraphs) && (this.numClosedParagraphs == otherPageStats.numClosedParagraphs) && (this.numOpenDivs == otherPageStats.numOpenDivs) && (this.numClosedDivs == otherPageStats.numClosedDivs) && (this.numOpenSpans == otherPageStats.numOpenSpans) && (this.numClosedSpans == otherPageStats.numClosedSpans) && (this.numOpenScripts == otherPageStats.numOpenScripts) && (this.numClosedScripts == otherPageStats.numClosedScripts) && (this.numOpenStyles == otherPageStats.numOpenStyles) && (this.numClosedStyles == otherPageStats.numClosedStyles) && (this.numOpenFrames == otherPageStats.numOpenFrames) && (this.numClosedFrames == otherPageStats.numClosedFrames) && (this.numOpenIFrames == otherPageStats.numOpenIFrames) && (this.numClosedIFrames == otherPageStats.numClosedIFrames) && (this.numOpenForms == otherPageStats.numOpenForms) && (this.numClosedForms == otherPageStats.numClosedForms);
-
hashCode
public int hashCode()
Java's hash-code requirement. Notice that this method is not static, and provides the hashCode that was computed for the vectorized-webpage when this instance ofPageStats
was created. Perhaps the subtlety is noticeable - there is also apublic static
version of methodint hashCode();
Both of them will return the same number, but only one of them actually computes a hash-code (the static-method). This non-static merely retrieves the hash that was created when this instance was built by the constructor.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- A hash-code that may be used when storing this node in a java sorted-collection.
- Code:
- Exact Method Body:
return this.hash;
-
compareTo
public int compareTo(PageStats other)
Java'sinterface Comparable<T>
requirements. This does a very simple comparison using the underlying fieldfinal String str
that all HTMLNode's contain.- Specified by:
compareTo
in interfacejava.lang.Comparable<PageStats>
- Parameters:
other
- Any otherPageStats
to be compared to'this' PageStats
- Returns:
- An integer that fulfills Java's
interface Comparable<T> public boolean compareTo(T t)
method requirements. - Code:
- Exact Method Body:
int compare1 = this.numNodes - other.numNodes; if (compare1 != 0) return compare1; return this.strLength - other.strLength;
-
toB64String
public java.lang.String toB64String()
This converts aPageStats
object to a simple-string (Base64 Encoded) object that may be passed and transmitted as a String.- Returns:
- Zipped, Serialized, Base-64 Encoded String version of this object.
- See Also:
StringParse.objToB64Str(Object)
- Code:
- Exact Method Body:
try { return StringParse.objToB64Str(this); } catch (Exception e) { return null; }
-
fromB64String
public static PageStats fromB64String(java.lang.String minimized)
Convets a Base65 EncodedString
into an instance ofPageStats
- Parameters:
minimized
- A previously minimized, compressed, Serialized version of this object (PageStats
).- Returns:
- An instance of this class.
- See Also:
StringParse.b64StrToObj(String)
- Code:
- Exact Method Body:
try { return (PageStats) StringParse.b64StrToObj(minimized); } catch (Exception e) { return null; }
-
clone
-
toString
public java.lang.String toString()
Generates a java string representation of'this' instance
ofclass PageStats
- Overrides:
toString
in classjava.lang.Object
- Returns:
- a java string of all the details encapsulated by a
PageStats
object reference. - Code:
- Exact Method Body:
return "strLength = " + strLength + '\n' + "hash = " + hash + '\n' + "numNodes = " + numNodes + '\n' + "numTagNodes = " + numTagNodes + '\n' + "numTextNodes = " + numTextNodes + '\n' + "numCommentNodes = " + numCommentNodes + '\n' + "numNewLines = " + numNewLines + '\n' + "\n" + "hasAVclass = " + hasAVclass + "\n" + "hasAVstyle = " + hasAVstyle + "\n" + "hasAVid = " + hasAVid + "\n" + "hasAVtitle = " + hasAVtitle + "\n" + "hasAVhref = " + hasAVhref + "\n" + "hasAVhreflang = " + hasAVhreflang + "\n" + "hasAVsrc = " + hasAVsrc + "\n" + "hasAVsrcset = " + hasAVsrcset + "\n" + "hasAVsrclang = " + hasAVsrclang + "\n" + "hasAVsrcdoc = " + hasAVsrcdoc + "\n" + "hasAValt = " + hasAValt + "\n" + "hasAVtarget = " + hasAVtarget + "\n" + "hasAVwidth = " + hasAVwidth + "\n" + "hasAVheight = " + hasAVheight + "\n" + "hasAVsize = " + hasAVsize + "\n" + "hasAVsizes = " + hasAVsizes + "\n" + "hasAVcols = " + hasAVcols + "\n" + "hasAVcolspan = " + hasAVcolspan + "\n" + "hasAVrows = " + hasAVrows + "\n" + "hasAVrowspan = " + hasAVrowspan + "\n" + "hasAVwrap = " + hasAVwrap + "\n" + "hasAVvalue = " + hasAVvalue + "\n" + "hasAVtype = " + hasAVtype + "\n" + "hasAVname = " + hasAVname + "\n" + "hasAVmin = " + hasAVmin + "\n" + "hasAVmax = " + hasAVmax + "\n" + "hasAVminlength = " + hasAVminlength + "\n" + "hasAVmaxlength = " + hasAVmaxlength + "\n" + "hasAVaccept = " + hasAVaccept + "\n" + "\n" + "numImages = " + numImages + '\n' + "numMeta = " + numMeta + '\n' + "numLink = " + numLink + '\n' + "numInput = " + numInput + '\n' + "numEmbed = " + numEmbed + '\n' + "numHR = " + numHR + '\n' + "numBR = " + numBR + '\n' + "\n" + "numOpenTables = " + numOpenTables + '\n' + "numClosedTables = " + numClosedTables + '\n' + "numOpenAnchors = " + numOpenAnchors + '\n' + "numClosedAnchors = " + numClosedAnchors + '\n' + "numOpenParagraphs = " + numOpenParagraphs + '\n' + "numClosedParagraphs = " + numClosedParagraphs + '\n' + "numOpenDivs = " + numOpenDivs + '\n' + "numClosedDivs = " + numClosedDivs + '\n' + "numOpenSpans = " + numOpenSpans + '\n' + "numClosedSpans = " + numClosedSpans + '\n' + "numOpenScripts = " + numOpenScripts + '\n' + "numClosedScripts = " + numClosedScripts + '\n' + "numOpenStyles = " + numOpenStyles + '\n' + "numClosedStyles = " + numClosedStyles + '\n' + "numOpenFrames = " + numOpenFrames + '\n' + "numClosedFrames = " + numClosedFrames + '\n' + "numOpenIFrames = " + numOpenIFrames + '\n' + "numClosedIFrames = " + numClosedIFrames + '\n' + "numOpenForms = " + numOpenForms + '\n' + "numClosedForms = " + numClosedForms + '\n';
-
-