apicompatanamdw/compatanalysercmd/libraryanalyser/inc/xmlsaxHandler.hpp
changeset 0 638b9c697799
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/apicompatanamdw/compatanalysercmd/libraryanalyser/inc/xmlsaxHandler.hpp	Tue Jan 12 14:52:39 2010 +0530
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include <xercesc/sax/HandlerBase.hpp>
+#include <xercesc/sax/AttributeList.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include "xmlstringtostlstring.hpp"
+
+#if !defined XMLSAXHANDLER
+	#define  XMLSAXHANDLER
+
+// Forward Reference
+//class AttributeList;
+class XMLNode;
+
+// T - Domain Map
+template<typename T>
+class XMLSAXHandler : public HandlerBase
+{
+	typedef T*	root;
+public:
+	XMLSAXHandler();
+	virtual ~XMLSAXHandler();
+
+	T& getDomainMap() { return dataMap; }
+
+	XMLNode& getRootElement() { return dataMap.root(); }
+	
+	// Handlers for the SAX DocumentHandler interface
+	virtual void startElement(const XMLCh* const name, AttributeList& attributes);
+	virtual void characters(const XMLCh* const chars, const unsigned int length);
+	virtual void ignorableWhitespace(const XMLCh* const chars, const unsigned int length);
+	virtual void endElement(const XMLCh* const name);
+//	void ignoreElement(const XMLCh* const aName);
+
+private:
+	// Private data members
+	T		dataMap;
+//	T name ;
+};
+
+template<typename T>
+XMLSAXHandler<T>::XMLSAXHandler()
+{
+}
+
+template<typename T>
+XMLSAXHandler<T>::~XMLSAXHandler()
+{
+}
+
+//  SAXParser: Implementation of the SAX DocumentHandler interface
+template<typename T>
+void XMLSAXHandler<T>::startElement(const XMLCh* const name, AttributeList&  attributes)
+{
+	XMLStringToSTLString str(name);
+	const XMLCh* value = NULL;
+
+		int length = attributes.getLength();
+		for(int i=0;i<length;i++)
+		{
+			value = attributes.getValue(i);
+		}
+		if (value)
+		{
+                        XMLStringToSTLString val(value);
+			dataMap.create(str.data(),val.data());
+		}
+		else
+			dataMap.create(str.data());
+
+//	}
+}
+
+template<typename T>
+void XMLSAXHandler<T>::endElement(const XMLCh* const name)
+{
+	XMLStringToSTLString str(name);
+	dataMap.add(str.data());
+}
+
+template<typename T>
+void XMLSAXHandler<T>::characters(const XMLCh* const chars, const unsigned length)
+{
+        XMLStringToSTLString str(chars);
+	dataMap.updateAttribute(str.data());
+}
+
+template<typename T>
+void XMLSAXHandler<T>::ignorableWhitespace( const XMLCh* const chars, const unsigned int length)
+{
+}
+/*
+template<typename T>
+void XMLSAXHandler<T>::ignoreElement(const XMLCh* const aName)
+{
+	name = aName;
+}*/
+
+#endif // XMLSAXHANDLER