php-src/ext/simplexml
Zeev Suraski c8c0e97982 Prevent SimpleXML from silently modifying types of variables that are
assigned to its objects.

Implementation notes for overloaded object modules:

- If you return a zval which is not otherwise referenced by the extension
  or the engine's symbol table, its reference count should be 0.
- If you receive a value zval in write_property/write_dimension, you
  may only modify it if its reference count is 1.  Otherwise, you must
  create a copy of that zval before making any changes.  You should NOT
  modify the reference count of the value passed to you.

Have fun!
2004-02-11 19:15:30 +00:00
..
examples update the examples 2004-01-17 21:44:22 +00:00
tests Fix test 2004-02-11 13:00:19 +00:00
config.m4 - Fixed bug #26072 (--disable-libxml does not work). 2003-11-12 23:42:38 +00:00
config.w32 add optional dep on spl for simplexml. 2004-01-08 21:53:48 +00:00
CREDITS Major bugfix for consistency. 2004-01-17 19:41:32 +00:00
php_simplexml_exports.h Rename header to prevent name clashes with external files 2004-01-18 23:35:13 +00:00
php_simplexml.h Fix bug #27010: segfault after returning nodes with children() 2004-01-22 21:30:14 +00:00
README - Fix typoes 2004-01-17 20:20:18 +00:00
simplexml.c Prevent SimpleXML from silently modifying types of variables that are 2004-02-11 19:15:30 +00:00
simplexml.dsp - Renamed all *php4* files to *php5*, changed all php4/PHP4 to php5/PHP5 2004-01-17 13:00:38 +00:00

SimpleXML is meant to be an easy way to access XML data.

SimpleXML objects follow four basic rules:

1) properties denote element iterators
2) numeric indices denote elements
3) non numeric indices denote attributes
4) string conversion allows to access TEXT data

When iterating properties then the extension always iterates over
all nodes with that element name. Thus method children() must be 
called to iterate over subnodes. But also doing the following:
foreach ($obj->node_name as $elem) {
  // do something with $elem
}
always results in iteration of 'node_name' elements. So no further 
check is needed to distinguish the number of nodes of that type.

When an elements TEXT data is being accessed through a property
then the result does not include the TEXT data of subelements.

Known issues
============

Due to engine problems it is currently not possible to access
a subelement by index 0: $object->property[0].

TODO
====

At the moment property access to multiple elements of the same
name returns an array of SimpleXML objects. This should be an 
object of a new type instead so that all kinds of linkage,
assignment and deleting would work.