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