` MS-XML parser code (Jim Kane) - Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

Icetips Article

Back to article list   Search Articles     Add Comment     Printer friendly     Direct link  

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


Today is April 28, 2024, 9:06 am
This article has been viewed 35117 times.
Google search has resulted in 43 hits on this article since January 25, 2004.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: