| xHarbour Reference Documentation > Class Reference (textmode) |
![]() |
![]() |
![]() |
Creates a new THtmlNode object.
THtmlNode():new( <cHtmlString> ) --> oTHtmlNode
or
THtmlNode():new( <oTHtmlNode> , ;
<cTagName> , ;
{<hAttributes>], ;
[<cText>] ) --> oTHtmlNode
Alternatively, a HTML compliant character string holding the attributes of the THtmlNode object can be passed (e.g. 'border="0" cellspacing="0" cellpadding="0"' are attributes for a <table> node).
The function returns a THtmlNode object and method :new() initializes the object.
Objects of the THtmlNode class represent a single node, or a leaf, in an HTML document. HTML documents are maintained by the THtmlDocument() class which builds a tree of HTML nodes when reading an HTML document. A THtmlDocument object creates this tree and fills it with THtmlNode objects.
The THtmlNode class is designed for comfortable HTML processing from PRG source code. The creation of HTML documents is supported by operator overloading and built in lookup tables representing all HTML 4.0 tag names and associated attributes. Refer to Overloaded operators below.
Note: when no THtmlNode object exists anymore, the memory resources for the HTML lookup tables should be released with function THtmlCleanup().
| See also: | AnsiToHtml(), THtmlCleanup(), THtmlInit(), THtmlDocument(), TIpClientHttp() |
| Category: | HTML functions , Object functions , xHarbour extensions |
| Header: | thtml.ch |
| Source: | tip\thtml.prg |
| LIB: | xhb.lib |
| DLL: | xhbdll.dll |
// This example demonstrates operator overloading for
// creating an HTML document from a database.
PROCEDURE Main
LOCAL oDoc, oNode, oTable, oRow, oCell
LOCAL nDll, pApi
CLS
TRY
USE Test.dbf
CATCH
? "Error: Database not found TEST.DBF"
QUIT
END
oDoc := THtmlDocument():new()
// Operator "+" creates a new node
oNode := oDoc:head + "meta"
oNode:name := "Generator"
oNode:content := "THtmlDocument"
// Operator ":" returns first "h1" from body (creates if not existent)
oNode := oDoc:body:h1
oNode:text := "My address book"
// Operator "+" creates a new <p> node
oNode := oDoc:body + "p"
// Operator "+" creates a new <font> node with attribute
oNode := oNode + 'font size="5"'
oNode:text := "This is a "
// Operator "+" creates a new <b> node
oNode := oNode + "b"
// Operator "+" creates a new <font> node with attribute
oNode := oNode + "font color='blue'"
oNode:text := "sample "
// Operator "-" closes 2nd <font>, result is <b> node
oNode := oNode - "font"
// Operator "-" closes <b> node, result is 1st <font> node
oNode := oNode - "b"
oNode:text := "database!"
// Operator "-" closes 1st <font> node, result is <p> node
oNode := oNode - "font"
oNode := oNode + "hr"
// Operator ":" returns first "table" from body (creates if not existent)
oTable := oDoc:body:table
oTable:attr := 'border="0" width="100%" cellspacing="0" cellpadding="0"'
oRow := oTable + 'tr bgcolor="lightcyan"'
FOR i:=1 TO FCount()
oCell := oRow + "th"
oCell:text:= FieldName(i)
NEXT
FOR i:=1 TO 10
oRow := oTable + "tr"
oRow:bgColor := IIf( Recno() % 2 == 0, "lightgrey", "white" )
FOR j:=1 TO FCount()
oCell := oRow + "td"
oCell:text := FieldGet(j)
NEXT
SKIP
NEXT
oNode := oDoc:body + "hr"
oNode := oDoc:body + "p"
oNode:text := "10 records from database " + Alias() + ".dbf"
DbCloseArea()
IF oDoc:writeFile( "Address.html" )
? "File created: Address.html"
ELSE
? "Error: ", FError()
ENDIF
WAIT
? HtmlToOem( oDoc:body:getText() )
nDll := DllLoad( "Shell32.dll" )
pApi := GetProcAddress( nDll, "ShellExecute" )
CallDll( pApi, 0, "open", "Address.html", NIL, "", 1 )
DllUnload( nDll )
RETURN
http://www.xHarbour.com