diff options
Diffstat (limited to 'framework/Xml/TXmlElementList.php')
-rw-r--r-- | framework/Xml/TXmlElementList.php | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/framework/Xml/TXmlElementList.php b/framework/Xml/TXmlElementList.php new file mode 100644 index 00000000..301f9d1e --- /dev/null +++ b/framework/Xml/TXmlElementList.php @@ -0,0 +1,81 @@ +<?php +/** + * TXmlElement, TXmlDocument, TXmlElementList class file + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2014 PradoSoft + * @license http://www.pradosoft.com/license/ + * @package System.Xml + */ + +/** + * TXmlElementList class. + * + * TXmlElementList represents a collection of {@link TXmlElement}. + * You may manipulate the collection with the operations defined in {@link TList}. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @package System.Xml + * @since 3.0 + */ +class TXmlElementList extends TList +{ + /** + * @var TXmlElement owner of this list + */ + private $_o; + + /** + * Constructor. + * @param TXmlElement owner of this list + */ + public function __construct(TXmlElement $owner) + { + $this->_o=$owner; + } + + /** + * @return TXmlElement owner of this list + */ + protected function getOwner() + { + return $this->_o; + } + + /** + * Inserts an item at the specified position. + * This overrides the parent implementation by performing additional + * operations for each newly added TXmlElement object. + * @param integer the specified position. + * @param mixed new item + * @throws TInvalidDataTypeException if the item to be inserted is not a TXmlElement object. + */ + public function insertAt($index,$item) + { + if($item instanceof TXmlElement) + { + parent::insertAt($index,$item); + if($item->getParent()!==null) + $item->getParent()->getElements()->remove($item); + $item->setParent($this->_o); + } + else + throw new TInvalidDataTypeException('xmlelementlist_xmlelement_required'); + } + + /** + * Removes an item at the specified position. + * This overrides the parent implementation by performing additional + * cleanup work when removing a TXmlElement object. + * @param integer the index of the item to be removed. + * @return mixed the removed item. + */ + public function removeAt($index) + { + $item=parent::removeAt($index); + if($item instanceof TXmlElement) + $item->setParent(null); + return $item; + } +}
\ No newline at end of file |