| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | <?php/** * This file is part of PHPPowerPoint - A pure PHP library for reading and writing * word processing documents. * * PHPPowerPoint is free software distributed under the terms of the GNU Lesser * General Public License version 3 as published by the Free Software Foundation. * * For the full copyright and license information, please read the LICENSE * file that was distributed with this source code. For the full list of * contributors, visit https://github.com/PHPOffice/PHPPowerPoint/contributors. * * @link        https://github.com/PHPOffice/PHPPowerPoint * @copyright   2010-2016 PHPPowerPoint contributors * @license     http://www.gnu.org/licenses/lgpl.txt LGPL version 3 */namespace PhpOffice\PhpPowerpoint\Tests;/** * DOM wrapper class */class XmlDocument{    /**     * Path     *     * @var string $path     */    private $path;    /**     * DOMDocument object     *     * @var \DOMDocument     */    private $dom;    /**     * DOMXpath object     *     * @var \DOMXpath     */    private $xpath;    /**     * File name     *     * @var string     */    private $file;    /**     * Create new instance     *     * @param string $path     */    public function __construct($path)    {        $this->path = realpath($path);    }    /**     * Get DOM from file     *     * @param string $file     * @return \DOMDocument     */    public function getFileDom($file = 'word/document.xml')    {        if (null !== $this->dom && $file === $this->file) {            return $this->dom;        }        $this->xpath = null;        $this->file = $file;        $file = $this->path . '/' . $file;        $this->dom = new \DOMDocument();        $this->dom->load($file);        return $this->dom;    }    /**     * Get node list     *     * @param string $path     * @param string $file     * @return \DOMNodeList     */    public function getNodeList($path, $file = 'word/document.xml')    {        if ($this->dom === null || $file !== $this->file) {            $this->getFileDom($file);        }        if (null === $this->xpath) {            $this->xpath = new \DOMXpath($this->dom);        }        return $this->xpath->query($path);    }    /**     * Get element     *     * @param string $path     * @param string $file     * @return \DOMElement     */    public function getElement($path, $file = 'word/document.xml')    {        $elements = $this->getNodeList($path, $file);        return $elements->item(0);    }    /**     * Get file name     *     * @return string     */    public function getFile()    {        return $this->file;    }    /**     * Get path     *     * @return string     */    public function getPath()    {        return $this->path;    }    /**     * Get element attribute     *     * @param   string  $path     * @param   string  $attribute     * @param   string  $file     * @return  string     */    public function getElementAttribute($path, $attribute, $file = 'word/document.xml')    {        return $this->getElement($path, $file)->getAttribute($attribute);    }    /**     * Get element attribute     *     * @param   string  $path     * @param   string  $attribute     * @param   string  $file     * @return  string     */    public function attributeElementExists($path, $attribute, $file = 'word/document.xml')    {        return $this->getElement($path, $file)->hasAttribute($attribute);    }    /**     * Check if element exists     *     * @param   string  $path     * @param   string  $file     * @return  string     */    public function elementExists($path, $file = 'word/document.xml')    {        $nodeList = $this->getNodeList($path, $file);        return !($nodeList->length == 0);    }}
 |