Consultor Eletrônico



Kbase P45600: How to save a handle for x-noderef to reference a previously
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/02/2004
Status: Unverified

GOAL:

How to save a handle for x-noderef to reference a previously visited node?

FIX:

In order to reference a previously visited node, simply create a new
x-nodref object that points to the same node in the tree.

Here is the sample code that works:

DEFINE VARIABLE hDoc AS HANDLE.
DEFINE VARIABLE hRoot AS HANDLE.
DEFINE VARIABLE hNode AS HANDLE.
DEFINE VARIABLE hNodeSave AS HANDLE.
DEFINE VARIABLE hText AS HANDLE.

CREATE X-DOCUMENT hDoc.
CREATE X-NODEREF hRoot.
CREATE X-NODEREF hNode.
CREATE X-NODEREF hText.
CREATE X-NODEREF hNodeSave.

hDoc:CREATE-NODE(hRoot,"Student","ELEMENT").
hDoc:APPEND-CHILD(hRoot).


MESSAGE
"Node Name ~t" hRoot:NAME "~n"
"Node Subtype ~t" hRoot:SUBTYPE "~n"
"Unique ID ~t" hRoot:UNIQUE-ID "~n"
VIEW-AS ALERT-BOX INFO BUTTONS OK.

hDoc:CREATE-NODE(hNode,"Name","ELEMENT").
hRoot:APPEND-CHILD(hNode).


MESSAGE
"hNode before the assignment to hNodeSave ~n"
"Node Name ~t" hNode:NAME "~n"
"Node Subtype ~t" hNode:SUBTYPE "~n"
"Unique ID ~t" hNode:UNIQUE-ID "~n"
VIEW-AS ALERT-BOX INFO BUTTONS OK.

/* save this X-NODEREF for later use */
hRoot:GET-CHILD(hNodeSave,hRoot:NUM-CHILDREN).
/* hNodeSave = hNode:HANDLE. */

MESSAGE
"hNodeSave after the assignment to hNodeSave ~n"
"NodeSave Name ~t" hNodeSave:NAME "~n"
"NodeSave Subtype ~t" hNodeSave:SUBTYPE "~n"
"UniqueSave ID ~t" hNodeSave:UNIQUE-ID "~n"
VIEW-AS ALERT-BOX INFO BUTTONS OK.

hDoc:CREATE-NODE(hNode,"First","ELEMENT").
hNode:SET-ATTRIBUTE("Nickname","Jo").
hNodeSave:APPEND-CHILD(hNode).



MESSAGE
"hNodeSave after the re-assignment of hNode ~n"
"NodeSave Name ~t" hNodeSave:NAME "~n"
"NodeSave Subtype ~t" hNodeSave:SUBTYPE "~n"
"NodeSave value ~t" hNodeSave:NODE-VALUE "~n"
"Unique ID ~t" hNodeSave:UNIQUE-ID "~n"
VIEW-AS ALERT-BOX INFO BUTTONS OK.

hDoc:CREATE-NODE(hText,?,"TEXT").
hText:NODE-VALUE="Joseph".
hNode:APPEND-CHILD(hText).
hDoc:CREATE-NODE(hNode,"Last","ELEMENT").
hDoc:CREATE-NODE(hText,?,"TEXT").
hText:NODE-VALUE="Tam".
hNode:APPEND-CHILD(hText).
hNodeSave:APPEND-CHILD(hNode).

hDoc:CREATE-NODE(hNode,"ID","ELEMENT").
hDoc:CREATE-NODE(hText,?,"TEXT").
hText:NODE-VALUE="25".
hNode:APPEND-CHILD(hText).
hRoot:INSERT-BEFORE(hNode,hNodeSave).

hDoc:SAVE("FILE","MyStudent.xml").