TMGXML1 ;TMG/kst/XML Exporter -- Testing code ;03/25/06 ;;1.0;TMG-LIB;**1**;07/09/05 ;"This is a test file for working with XML Documents Start ; ;"Kevin Toppenberg, MD 7-9-04 ;"This is a test file for working with XML Documents new Y,PATH,FILE,GBLREF kill ^TMP("KT",$J) set PATH="/home/kdtop" write "-----------------------",! read "Enter Filename:",FILE write ! if FILE="^" quit if FILE="" set FILE="XMLSample#2.xml" write "Using default: ",FILE,! set GBLREF="^TMP(""KT"","_$J_",0)" set Y=$$FTG^%ZISH(PATH,FILE,GBLREF,3) if 'Y write "error opening file.",! quit ;zwr ^TMP("KT",$JOB,*) ;"do EN^MXMLTEST($NAME(^TMP("KT",$J)),"V") write "---------------------------",! write "Part #2",!,! new FileName set FileName=PATH_"/"_FILE ;write "FileName=",FileName,! new FnArray set FnArray="Array of Callback Functions" set FnArray("STARTDOCUMENT")="StartDoc^TMGXML1" set FnArray("ENDDOCUMENT")="EndDoc^TMGXML1" set FnArray("DOCTYPE")="DocType^TMGXML1" set FnArray("STARTELEMENT")="StartElement^TMGXML1" set FnArray("ENDELEMENT")="EndElement^TMGXML1" set FnArray("CHARACTERS")="Chars^TMGXML1" ;write "Here is FnArray",! ;zwr FnArray(*) write "Calling EN^MXMLPRSE",! do EN^MXMLPRSE($NAME(^TMP("KT",$J)),.FnArray) ;do EN^MXMLPRSE(FileName,.FnArray) write "Done calling EN^MXMLPRSE",! write "---------------------------",! write "Part #3",!,! new ParseHandle write "Calling EN^MXMLDOM",! set ParseHandle=$$EN^MXMLDOM($NAME(^TMP("KT",$J)),"V") write "Done calling EN^MXMLDOM",! write "Handle=",ParseHandle,! do ShowNode(1,0) do ListChildren(1,1) do DELETE^MXMLDOM(ParseHandle) kill ^TMP("KT",$J) write "********************",! write "Quiting normally",! QuitLabel quit ;"------------------------------------------------------------- StartDoc write "##Starting Document Processing##",! quit EndDoc write "##End of Document Processing##",! quit DocType(ROOT,PUBID,SYSID) write "Doctype encountered.",! write "ROOT=",ROOT,! write "PUBID=",PUBID,! write "SYSID=",SYSID,! quit StartElement(NAME,ATTRLIST) write "Attrib:" write "Name=",NAME,! if $data(ATTRLIST) do . write "AttrList:" . zwr ATTRLIST quit EndElement(NAME) write "End Attrib:" write NAME,! quit Chars(TEXT) write "TEXT:",TEXT,! quit ;"------------------------------------------------------------- ListChildren(Node,IndentN) new ChildNode set ChildNode=$$CHILD^MXMLDOM(ParseHandle,Node,0) if ChildNode=0 quit new loop for loop=1:1 do if ChildNode=0 quit . do ShowNode(ChildNode,IndentN) . do ListChildren(ChildNode,IndentN+1) . set ChildNode=$$CHILD^MXMLDOM(ParseHandle,Node,ChildNode) quit ShowNode(Node,IndentN) new NodeText new AttribText do Indent(IndentN) write $$NAME^MXMLDOM(ParseHandle,Node),! if $$CMNT^MXMLDOM(ParseHandle,Node,$NAME(NodeText)) do . do Indent(IndentN) . write " Comment: ",NodeText(1),! if $$TEXT^MXMLDOM(ParseHandle,Node,$NAME(NodeText)) do . do Indent(IndentN) . write " '",NodeText(1),"'",! set AttribText=$$ATTRIB^MXMLDOM(ParseHandle,Node) if $data(AttribText),AttribText'="" do . do Indent(IndentN) . write " Attrib: ",AttribText,"=" . write $$VALUE^MXMLDOM(ParseHandle,Node,AttribText),! quit Indent(IndentN) for i=1:1:IndentN write " "