HADXML ;NEW PROGRAM [ 04/03/2003 11:13 AM ] ;Set Dev=$$OPEN^vhDEV(,"HalOrdSimple.xml","R") Set Dev=$$OPEN^vhDEV(,"HalOrdExample.xml","R") Use Dev Do INIT Set Skip=$$READ Set Version=$$READ Write !,Version,! Set Main="" Set Skip=$$READ Set Val=$$READ Do NODE(Status,Val,1) Close:0'[Dev Dev Quit J01 ;-ORDERLIJN Write "Verwerk OL",! Quit J02 ;-PROD_AD_SVDX Write "Verwerk Prod AD SVDX",! Quit J03 ;-PROD_KD_SVDX Write "Verwerk Prod KD SVDX",! Quit INIT Set ReadEnd="<" Set EOFCnt=0 Kill C,Key For Key=1:1 Set Lijn=$T(@("J"_$E(100+Key,2,3))) Quit:Lijn="" Set Jump($P(Lijn,";",2))=$P(Lijn," ") Quit NODE(Status,Val,Level) ;Write ?Level,Status,":",Val,! If Status="D" Set Content=Val Quit For Quit:Status="-" Do .Set Val=$$READ ; "-" node .Set:Val="" Val=$$READ .If Status="-" Do ..Write ?Level,"-",":",Val,"->",Content,! ..Do:Content'="" ASSIGN(Level-1,Content) ..Do EXEC(Status,Val,Content) ..Set Content="" .Else If Status="+" Do ..Set Key(Level)=$$SPLIT(Val) ..Do EXEC(Status,$$SPLIT(Val),"",$P(Val," ",2,9999)) ..Do NODE(Status,Val,Level+1) .Else Do ..Do NODE(Status,Val,Level+1) Quit ASSIGN(Level,Content) If Level=1 Set C(Key(1))=Content If Level=2 Set C(Key(1),Key(2))=Content If Level=3 Set C(Key(1),Key(2),Key(3))=Content If Level=4 Set C(Key(1),Key(2),Key(3),Key(4))=Content If Level=5 Set C(Key(1),Key(2),Key(3),Key(4),Key(5))=Content If Level=6 Set C(Key(1),Key(2),Key(3),Key(4),Key(5),Key(6))=Content Quit EXEC(Status,Label,Value,Params) If $D(Jump(Status_Label)) Do @Jump(Status_Label) Quit SPLIT(Node) Quit $P(Node," ") READ() New Cnt Set Cnt=0 Use Dev Set Input="" Set EOF=0 For Read *InpChar:30 Quit:InpChar=$A(ReadEnd)!'InpChar Do .Set Cnt=Cnt+1 .Quit:InpChar=10 ; Skip LF .Quit:InpChar=13 ; Skip CR .Quit:InpChar=9 ; Skip TAB .Set Input=Input_$C(InpChar) Use 0 Set EOFCnt=$S($L(Input):0,1:EOFCnt+1) Set:EOFCnt>10 EOF=1 If ReadEnd="<" Set Status="D",ReadEnd=">" Else If $E(Input)="/" Set Status="-",ReadEnd="<",Input=$E(Input,2,999) Else Set Status="+",ReadEnd="<" ;Write "-->",Status,":",Input,! Quit Input READSTR(ReadEnd) New Cnt Set Cnt=0 Use Dev Set Input="" B Set EOF=0 For Read *InpChar:30 Quit:InpChar=$A(ReadEnd)!'InpChar Do .Set Cnt=Cnt+1 .Quit:InpChar=10 ; Skip LF .Quit:InpChar=13 ; Skip CR .Quit:InpChar=9 ; Skip TAB .Set Input=Input_$C(InpChar) Use 0 Set EOFCnt=$S($L(Input):0,1:EOFCnt+1) Set:EOFCnt>10 EOF=1 Write "-->",Input,! Quit Input