00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef skXMLELEMENTOBJECT_H
00024 #define skXMLELEMENTOBJECT_H
00025
00026 #include "skExecutable.h"
00027 #include <xercesc/dom/deprecated/DOM_Element.hpp>
00028 #include <iostream.h>
00029 #include <xercesc/framework/XMLFormatter.hpp>
00030
00031 class skMethodTable;
00032
00033
00034
00035 #define XMLELEMENT_TYPE 2
00036
00037
00038
00039
00040
00041
00042
00043
00044 CLASSEXPORT extern ostream& operator<< (ostream& target, const DOMString& s);
00045
00063 class CLASSEXPORT skXMLElementObject : public skExecutable {
00064 public:
00068 skXMLElementObject();
00074 skXMLElementObject(const skString& location,DOM_Element elem);
00078 ~skXMLElementObject();
00083 int executableType() const;
00087 int intValue() const;
00091 float floatValue() const;
00095 bool boolValue() const;
00099 Char charValue() const;
00103 skString strValue() const;
00111 bool setValue(const skString& s,const skString& attribute,const skRValue& return_value);
00119 bool setValueAt(const skRValue& array_index,const skString& attribute,const skRValue& value);
00129 bool getValue(const skString& s,const skString& attribute,skRValue& return_value);
00134 bool getValueAt(const skRValue& array_index,const skString& attribute,skRValue& value);
00147 bool method(const skString& name,skRValueArray& args,skRValue& ret,skExecutableContext& ctxt);
00152
00157 void copyItemsInto(DOM_Element other);
00161 virtual void setAddIfNotPresent(bool enable);
00165 virtual bool getAddIfNotPresent();
00170 DOM_Element getElement();
00176 static skString getData(DOM_Element element);
00182 static void setData(DOM_Element element,const skString& data);
00189 static DOM_Element findChild(DOM_Element parent,const skString& tagname);
00196 static DOM_Element findChild(DOM_Element parent,int index);
00205 static DOM_Element findChild(DOM_Element parent,const skString& tagname,const skString& attribute,const skString& value);
00209 void setAttribute(skString name,const skString& value);
00214 skString getAttribute(const skString& name);
00218 static skString toString(DOMString str);
00222 static DOMString fromString(const skString& str);
00226 skString getLocation() const;
00228 static int countChildren(DOM_Element parent);
00233 void save(ostream& out);
00237 virtual skString getSource(const skString& location);
00242 virtual void getInstanceVariables(skRValueTable& table);
00243 protected:
00248 virtual void setElement(DOM_Element element);
00254 virtual skXMLElementObject * createXMLElementObject(const skString& location,DOM_Element element);
00258 skString m_ScriptLocation;
00263 skExecutableIterator * createIterator(const skString& qualifier);
00267 skExecutableIterator * createIterator();
00268 private:
00272 DOM_Element m_Element;
00276 skMethodTable * m_MethodCache;
00280 skXMLElementObject(const skXMLElementObject&);
00284 skXMLElementObject& operator=(const skXMLElementObject&);
00286 void save(ostream& target, DOM_Node& toWrite,XMLFormatter& formatter,XMLCh* encoding_name);
00291 bool m_AddIfNotPresent;
00292
00293 };
00294
00295 #endif