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").