Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Funkiness with VBSAXReader class
Message
From
19/12/2000 16:16:13
 
 
To
19/12/2000 16:13:52
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Miscellaneous
Thread ID:
00455202
Message ID:
00455205
Views:
62
>Mike S, if you're listening:
>
>When impementing the VBSAXHandler interfaces in VFP and using the VBSAXReader object to parse some XML, the oAttribute parameter of the StartElement method is dead. Checking the oAttributes.Length property returns .NULL. instead of the number of attributes for the element. All other methods of the oAttributes object return errors when you try to access the name, index, or value of an attribute. Try this code:
>

Woops, use this code instead.
LOCAL oReader AS MSXML2.SAXXMLReader
oReader = CREATEOBJECT("MSXML2.SAXXMLReader")
oHandler = CREATEOBJECT("VFPSaxHandler")
oReader.contentHandler = oHandler
oReader.ErrorHandler = oHandler
oreader.DTDHandler = oHandler

oReader.Parse([<?xml version="1.0"?><root name="someroot"><child1></child1><child2>/<child2></root>])

?oReader.nAttributes

DEFINE CLASS VFPSAXHandler AS Session OLEPUBLIC

	IMPLEMENTS IVBSAXContentHandler IN "msxml3.dll"
	IMPLEMENTS IVBSAXDTDHandler IN "msxml3.dll"
	IMPLEMENTS IVBSAXErrorHandler IN "msxml3.dll"

	nAttributes = 0	
*	IVBSAXContentHandler__put_documentLocator = .NULL.
	PROCEDURE IVBSAXContentHandler_put_documentLocator(oLocator AS Object) AS VARIANT
	ENDPROC

	PROCEDURE IVBSAXContentHandler_startDocument() AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_endDocument() AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_startPrefixMapping(strPrefix AS STRING, strURI AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_endPrefixMapping(strPrefix AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_startElement(strNamespaceURI AS STRING, strLocalName AS STRING, strQName AS STRING, oAttributes AS VARIANT) AS VOID
		THIS.nAttributes = THIS.nAttributes + oAttributes.Length
	ENDPROC

	PROCEDURE IVBSAXContentHandler_endElement(strNamespaceURI AS STRING, strLocalName AS STRING, strQName AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_characters(strChars AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_ignorableWhitespace(strChars AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_processingInstruction(strTarget AS STRING, strData AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXContentHandler_skippedEntity(strName AS STRING) AS VOID
	ENDPROC

	PROCEDURE IVBSAXDTDHandler_notationDecl(strName AS STRING @, strPublicId AS STRING @, strSystemId AS STRING @) AS VOID
	ENDPROC

	PROCEDURE IVBSAXDTDHandler_unparsedEntityDecl(strName AS STRING @, strPublicId AS STRING @, strSystemId AS STRING @, strNotationName AS STRING @) AS VOID
	ENDPROC

	PROCEDURE IVBSAXErrorHandler_error(oLocator AS VARIANT, strError AS STRING @, nErrorCode AS Number) AS VOID
	ENDPROC

	PROCEDURE IVBSAXErrorHandler_fatalError(oLocator AS VARIANT, strError AS STRING @, nErrorCode AS Number) AS VOID
 		MESSAGEBOX("Error: " + strError)
	ENDPROC

	PROCEDURE IVBSAXErrorHandler_warning(oLocator AS VARIANT, strError AS STRING @, nErrorCode AS Number) AS VOID
 		MESSAGEBOX("Warning: " + strError)
	ENDPROC

	PROCEDURE IVBSAXErrorHandler_IgnorableWarning(oLocator AS VARIANT, strError AS STRING @, nErrorCode AS Number) AS VOID
 		MESSAGEBOX("Ignorable Warning: " + strError)
	ENDPROC
ENDDEFINE
Erik Moore
Clientelligence
Previous
Reply
Map
View

Click here to load this message in the networking platform