`
XML: MS-XML parser code 2004-04-24 -- Jim Kane Newsgroups: comp.lang.clarion,softvelocity.clarion.language > Has anyone had succes in using the following VB code in Clarion? > '--------------------------------------------------------------------------- > ------------------------------------------- > Dim xmlDoc As MSXML2.DOMDocument > Dim ErrorState As Long > Dim ErrorString As String > Dim ErrorCode As Variant > Dim Desc As String > > > '**** Load the xmldoc into the XML parser **** > Set xmlDoc = CreateObject("MSXML2.DOMDocument") > If Not xmlDoc.loadXML(sXMLDocument) Then > With xmlDoc.parseError > Desc = " File Pos = " & .filepos & ", Error Code = " & > ..ErrorCode & ",Line = " & .Line & ", Line Pos = " & .linepos & ", > Reason = " & .reason & ", Source = " & .srcText > Err.Raise 1011, Err.Source, Desc > Exit Function > End With > End If > > '--------------------------------------------------------------------------- > ------------------------------------------- Here is a literal translation with a few more details. However if you try to use the clarion ole control for xml you are likely to comit suicide before the project is over. It would be much smarter to generate the interfaces and do it right. I wrote the code below a long time ago in c5b then abandoned it and went early binding. hence I lived. Jim Kane program map parse(window, long,string, *string),byte end parseerror string(500) window WINDOW('Caption'),AT(,,260,100),GRAY,DOUBLE OLE,AT(74,27,100,71),USE(?Ole1) END END code open(window) 0{prop:hide}=1 accept case event() of event:openwindow ?ole1{prop:create}='msxml2.domdocument' if parse(window, ?ole1, 'something.xml', parseerror) then message(clip(parseerror),'XML error') post(event:closewindow) cycle else Message('No error') post(event:closewindow) cycle end end end close(window) parse Procedure(window pW, long pfeq, string pFilename, *string pErrorstr) cParseError cstring(20) res byte vbtrue equate(-1) vbfalse equate(0) Code pW $ pFEQ{'ASYNC'}=vbfalse pW $ pFEQ{'ValidateOnParse'}=vbTrue pW $ pFEQ{'resolveExternals'}=vbFalse if pW $ pFEQ{'Load("'&clip(pfilename)&'")'}<>vbTrue then cParseError=pW $ pFEQ{'ParseError'} if cParseError[1]='`' then if pW $ pFEQ{cParseError & '.Errorcode'}<>0 then pErrorStr='Errorcode=' & pW $ pFEQ{cParseError & '.Errorcode'} & | ' Reason='& pW $ pFEQ{cParseError & '.Reason'} & | ' Line='& pW $ pFEQ{cparseError & '.line'} & | ' Linepos='&pW $ pFEQ{cparseerror & '.linepos'} & | ' FilePos='&pW $ pFEQ{cParseError & '.filepos'} & | ' scrText='& pW $ pFEQ{cParseError & ',srcText'} end pW $ pFEQ{prop:release}=cParseError res=3 else pErrorStr='Isthe MSxml com object installed?' res=3 end end return res Printed November 23, 2024, 2:04 am This article has been viewed/printed 35370 times. Google search has resulted in 43 hits on this article since January 25, 2004. |