Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

skXMLElementObject Class Reference

This object is a container for an XML element, and exposes an interface to it to Simkin The class implements methods from the Executable interface. More...

#include <skXMLElementObject.h>

Inheritance diagram for skXMLElementObject:

skExecutable skiExecutable InheritsElement skXMLExecutable InheritsExecutable List of all members.

Public Methods

 skXMLElementObject ()
 Default Constructor.

 skXMLElementObject (const skString& location,DOM_Element elem)
 Constructor which takes an Element. More...

 ~skXMLElementObject ()
 Destructor.

int executableType () const
 Returns XMLELEMENT_TYPE indicating the element is an XMLElementObject. More...

int intValue () const
float floatValue () const
bool boolValue () const
Char charValue () const
skString strValue () const
bool setValue (const skString& s,const skString& attribute,const skRValue& return_value)
 sets the value of an item in the element. More...

bool setValueAt (const skRValue& array_index,const skString& attribute,const skRValue& value)
 Sets a value within the nth element of the XML element. More...

bool getValue (const skString& s,const skString& attribute,skRValue& return_value)
 Retrieves a field from the XML. More...

bool getValueAt (const skRValue& array_index,const skString& attribute,skRValue& value)
 Retrieves the nth value from within the element. More...

bool method (const skString& name,skRValueArray& args,skRValue& ret)
 this method attempts to execute a method stored in the XML. More...

void copyItemsInto (DOM_Element other)
 Clears the other element and does a deep copy of the children of this node into that one. More...

virtual void setAddIfNotPresent (bool enable)
 sets the flag controlling whether new elements are created as they are accessed. More...

virtual bool getAddIfNotPresent ()
 this returns the value of the flag controlling whether new elements are created as they are accessed. More...

DOM_Element getElement ()
 This method returns the XML Element being held by the object. More...

void setAttribute (skString name,const skString& value)
 Sets an attribute on this node.

skString getAttribute (const skString& name)
 This method returns the value of an attribute attached to this element. More...

skString getLocation () const
 This function returns the location associated with this object (typically a file name).


Static Public Methods

skString getData (DOM_Element element)
 retrieves the text data from an element. More...

void setData (DOM_Element element,const skString& data)
 sets the text data for a node by looking for the first CDATA and TEXT child node. More...

DOM_Element findChild (DOM_Element parent,const skString& tagname)
 returns a child element. More...

DOM_Element findChild (DOM_Element parent,int index)
 returns the nth child element. More...

DOM_Element findChild (DOM_Element parent,const skString& tagname,const skString& attribute,const skString& value)
 returns a child element with the given attribute set to the given value. More...

skString toString (DOMString str)
 Converts a Xerces DOMString to a Simkin skString.

DOMString fromString (const skString& str)
 Converts a Simkin skString to a Xerces DOMString.

int countChildren (DOM_Element parent)
 this method returns the number of element children of the given element.


Protected Methods

virtual void setElement (DOM_Element element)
 This method updates the associated element and clears the parse tree cache. More...

virtual skXMLElementObject* createXMLElementObject (const skString& location,DOM_Element element)
 This method creates a new XML Element object to wrap an element. More...

skExecutableIteratorcreateIterator (const skString& qualifier)
 This function returns an skExecutableIterator object which is used in the for each statement. More...

skExecutableIteratorcreateIterator ()
 This function returns an skExecutableIterator object which is used in the for each statement. More...


Protected Attributes

skString m_ScriptLocation
 the location that the XML document came from.


Detailed Description

This object is a container for an XML element, and exposes an interface to it to Simkin The class implements methods from the Executable interface.

The methods getValue, setValue and method all search for matching element tags within the XML document. Only the first matching tag is used. The class uses the Xerces library to access XML documents

The class supports the following fields:

The class supports the following methods:


Constructor & Destructor Documentation

skXMLElementObject::skXMLElementObject ( const skString & location,
DOM_Element elem )
 

Constructor which takes an Element.

Parameters:
location   - used to identify the source of the document in error messages
elem   - the element to be stored


Member Function Documentation

bool skXMLElementObject::boolValue ( ) const [virtual]
 

Returns:
the value of the element text data as a boolean

Reimplemented from skExecutable.

Char skXMLElementObject::charValue ( ) const [virtual]
 

Returns:
the first character of the element text data

Reimplemented from skExecutable.

void skXMLElementObject::copyItemsInto ( DOM_Element other )
 

Clears the other element and does a deep copy of the children of this node into that one.

Parameters:
child   - the element into which our children will be copied

skExecutableIterator * skXMLElementObject::createIterator ( ) [protected, virtual]
 

This function returns an skExecutableIterator object which is used in the for each statement.

It will iterate over *all* children of this element

Reimplemented from skExecutable.

skExecutableIterator * skXMLElementObject::createIterator ( const skString & qualifier ) [protected, virtual]
 

This function returns an skExecutableIterator object which is used in the for each statement.

It will iterate over elements with the given tag.

Parameters:
qualifier   tag - only elements with this tag will appear in the iteration

Reimplemented from skExecutable.

skXMLElementObject * skXMLElementObject::createXMLElementObject ( const skString & location,
DOM_Element element ) [protected, virtual]
 

This method creates a new XML Element object to wrap an element.

Override this for special behaviour in derived classes. In this method, the newly created object inherits this object's m_AddIfNotPresent flag

Parameters:
location   the location of this element
element   the DOM element to associate with the object

Reimplemented in InheritsElement.

int skXMLElementObject::executableType ( ) const [virtual]
 

Returns XMLELEMENT_TYPE indicating the element is an XMLElementObject.

Returns:
the type as XML element

Reimplemented from skExecutable.

DOM_Element skXMLElementObject::findChild ( DOM_Element parent,
const skString & tagname,
const skString & attribute,
const skString & value ) [static]
 

returns a child element with the given attribute set to the given value.

Parameters:
parent   the parent element
tagname   the tag name of the element
attribute   name of the attribute
value   value of the named attribute
Returns:
the first element child of the parent with the matching tag name and attribute value, or null if not found

DOM_Element skXMLElementObject::findChild ( DOM_Element parent,
int index ) [static]
 

returns the nth child element.

Parameters:
parent   the parent element
index   the index of the element
Returns:
the matching element or null if outside the current list ot items

DOM_Element skXMLElementObject::findChild ( DOM_Element parent,
const skString & tagname ) [static]
 

returns a child element.

Parameters:
parent   the parent element
tagname   the tag name of the element
Returns:
the first element child of the parent with the matching tag name, or null if not found

float skXMLElementObject::floatValue ( ) const [virtual]
 

Returns:
the value of the element text data as a float

Reimplemented from skExecutable.

bool skXMLElementObject::getAddIfNotPresent ( ) [virtual]
 

this returns the value of the flag controlling whether new elements are created as they are accessed.

Returns:
true if the feature is enabled, otherwise false (the default)

skString skXMLElementObject::getAttribute ( const skString & name )
 

This method returns the value of an attribute attached to this element.

Returns:
the value of the given attribute

skString skXMLElementObject::getData ( DOM_Element element ) [static]
 

retrieves the text data from an element.

Parameters:
element  
Returns:
the text from a child node of type CDATA or TEXT

DOM_Element skXMLElementObject::getElement ( )
 

This method returns the XML Element being held by the object.

Returns:
the underlying Element

bool skXMLElementObject::getValue ( const skString & s,
const skString & attribute,
skRValue & return_value ) [virtual]
 

Retrieves a field from the XML.

The first sub-element matching the tag is found. The value returned is an XMLElementObject, unless the attrib value is specified. It also supports the following built-in field:

"nodename" - returns the tag name of this element

If the m_AddIfNotPresent flag is true, a new item will be added if one is not already present.

Parameters:
name   - the tag name containing the data
attrib   - the attribute name to retrieve
return_value   - the RValue to containing the value to be set
Returns:
true if the method was found, false otherwise

Reimplemented from skExecutable.

bool skXMLElementObject::getValueAt ( const skRValue & array_index,
const skString & attribute,
skRValue & value ) [virtual]
 

Retrieves the nth value from within the element.

If the array index falls within the range of the number of children of this element, a new XMLElementObject encapsulating the child is returned. If the m_AddIfNotPresent flag is true, a new item with the tag name "array_item" will be added if one is not already present

Reimplemented from skExecutable.

int skXMLElementObject::intValue ( ) const [virtual]
 

Returns:
the value of the element text data as an integer

Reimplemented from skExecutable.

bool skXMLElementObject::method ( const skString & name,
skRValueArray & args,
skRValue & ret ) [virtual]
 

this method attempts to execute a method stored in the XML.

It searches for an element whose tag matches the method name and if found passes the text for the tag through to the interpeter.

The method also supports the following methods to Simkin scripts:

  • dump - writes the whole XML Object out to the tracer (useful for debugging)
  • enumerate([name]) - returns an skXMLElementObjectEnumerator which enumerates over the child elements of this element. If no tag name is passed the enumerator lists all the children. A tag name can be passed to show only children with the matching tag name.
Parameters:
name   the name of the method
args   an array of arguments to the method
ret   the object to receive the result of the method call
Returns:
true if the method was found, false otherwise

Reimplemented from skExecutable.

void skXMLElementObject::setAddIfNotPresent ( bool enable ) [virtual]
 

sets the flag controlling whether new elements are created as they are accessed.

Parameters:
enable   enables this feature (which by default is disabled)

void skXMLElementObject::setData ( DOM_Element element,
const skString & data ) [static]
 

sets the text data for a node by looking for the first CDATA and TEXT child node.

Parameters:
element   the element to be changed
data   the data to be set

void skXMLElementObject::setElement ( DOM_Element elem ) [protected, virtual]
 

This method updates the associated element and clears the parse tree cache.

Parameters:
elem   - the new Element

Reimplemented in InheritsElement.

bool skXMLElementObject::setValue ( const skString & s,
const skString & attribute,
const skRValue & return_value ) [virtual]
 

sets the value of an item in the element.

The first sub-element matching the tag is found. If the value passed is an element, it is first copied. If the m_AddIfNotPresent flag is true, a new item will be added if one is not already present

Parameters:
name   - the name of the element tag to set (null if it's the overall element)
attribute   - the name of the attribute to set (null to set text for the element)
return_value   - the RValue to receive the value
Returns:
true if the field was found, false otherwise

Reimplemented from skExecutable.

bool skXMLElementObject::setValueAt ( const skRValue & array_index,
const skString & attribute,
const skRValue & value ) [virtual]
 

Sets a value within the nth element of the XML element.

If the m_AddIfNotPresent flag is true, a new item with the tag name "array_item" will be added if one is not already present.

Parameters:
array_index   - the identifier of the item - this might be a string, integer or any other legal value
attribute   - the attribute name to set (may be blank)
value   - the value to be set
Returns:
true if the field was changed, false if the field could not be set or found

Reimplemented from skExecutable.

skString skXMLElementObject::strValue ( ) const [virtual]
 

Returns:
the value of the element text data as a string

Reimplemented from skExecutable.


The documentation for this class was generated from the following files:
Generated at Mon Nov 5 19:22:26 2001 for Simkin by doxygen1.2.1 written by Dimitri van Heesch, © 1997-2000