You can provide Array like access to your object by implementing the ArrayAccess interface, which is part of the PHP Standard Library. This interface is one of those "even if you don't have the full PHP Standard Library extension installed, you still have this interface available in PHP 5" things.
By implementing this interface, and defining four methods for your class
public boolean offsetExists ( string $offset )
public mixed offsetGet ( string $offset )
public void offsetSet ( string $offset , string $value )
public void offsetUnset ( string $offset )
you should be able to use square brackets with your instantiated objects.
As for SimpleXML itself, I'm not sure if it actually implements the ArrayAccess interface, or if there's something else going on behind the scenes in the PHP source that gives it these super powers.