Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*This file is part of ActiveLink PHP XML Package (www.active-link.com).Copyright (c) 2002-2004 by Zurab DavitianiYou can contact the author of this software via E-mail athattrick@mailcan.comActiveLink PHP XML Package is free software; you can redistribute it and/or modifyit under the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.ActiveLink PHP XML Package is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU Lesser General Public License for more details.You should have received a copy of the GNU Lesser General Public Licensealong with ActiveLink PHP XML Package; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//** requires XML, Tag and File classes*/import("org.active-link.xml.XML");import("org.active-link.sys.File");import("org.active-link.xml.Tag");/*** XMLDocument class provides a document class for XML* @class XMLDocument* @package org.active-link.xml* @author Zurab Davitiani* @version 0.4.0* @extends File* @requires File, XML, Tag* @see XML*/class XMLDocument extends File {// protected variablesvar $xml;var $tag;/*** If filename is set and fileOpenMode is one of the modes that allows file to be read then file is opened and its contents parsed* If filename is set and fileOpenMode is something other than above the appropriate file is opened/created* If filename is not set then no files are opened/parsed/created and object contains default values* @method XMLDocument* @param optional string filename* @param optional string fileOpenMode*/function XMLDocument($filename = "", $fileOpenMode = "r") {$success = $this->File($filename, $fileOpenMode);$this->tag = new Tag();$this->tag->tagStartOpen = "<?";$this->tag->tagClose = "?>";if($this->connected && ($this->fileOpenMode == $this->fileOpenModeRead || $this->fileOpenMode == $this->fileOpenModeReadWrite)) {$fileContents = $this->getContents();$this->close();$this->parseFromString($fileContents);}else {$this->setDefaultXMLTag();$this->xml = new XML();}return $success;}/*** Returns the XML object containing actual XML tree; in PHP 4 make sure to use =& to get a reference instead of a copy* @method getXML* @returns object of type XML containing actual XML tree*/function getXML() {return $this->xml;}/*** Returns the XML string of a complete XML document* @method getXMLString* @returns string containing contents of XML document*/function getXMLString() {$xmlString = $this->tag->getTagString();$xmlString .= "\n\n";$xmlString .= $this->xml->getXMLString(0);return $xmlString;}/*** Parses XML document from supplied string, also called from constructor when parsing file contents* @method parseFromString* @param string XMLDocString* @returns none*/function parseFromString($XMLDocString) {$tagPos = $this->tag->setTagFromString($XMLDocString);if($tagPos === false) {$tagPos = array(0 => 0, 1 => 0);$this->setDefaultXMLTag();}$xmlContents = trim(substr($XMLDocString, $tagPos[1]));$this->xml = new XML($xmlContents);}/*** Saves document contents to a supplied filename* @method save* @param string filename* @returns true if successful, false otherwise*/function save($filename) {$success = $this->open($filename, $this->fileOpenModeWrite);if($success) {$bytesWritten = $this->write($this->getXMLString());if($bytesWritten <= 0)$success = false;$this->close();}return $success;}/*** (Re)sets XML version/encoding to default values* @method setDefaultXMLTag* @returns none*/function setDefaultXMLTag() {$this->tag->setTagName("xml");$this->tag->setAttribute("version", "1.0");$this->tag->setAttribute("encoding", "UTF-8");}/*** Sets encoding of the XML document* @method setEncoding* @param string encoding* @returns none*/function setEncoding($encoding) {$this->tag->setAttribute("encoding", $encoding);}/*** Sets version of the XML document* @method setVersion* @param string version* @returns none*/function setVersion($version) {$this->tag->setAttribute("version", $version);}/*** Sets XML object of the XMLDocument, sets/changes/updates XML content to the supplied XML tree, uses reference no copy is created* @method setXML* @param object xml* @returns true if successful, false otherwise*/function setXML(&$xml) {$success = false;if(gettype($xml) == "object" && strtolower(get_class($xml)) == "xml") {$this->xml = &$xml;$success = true;}return $success;}}