defaultFile; } /** * Set default file * * @param string $file * @return string */ public function setDefaultFile($file) { $temp = $this->defaultFile; $this->defaultFile = $file; return $temp; } /** * 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 = '') { if (!$file) { $file = $this->defaultFile; } if (null !== $this->dom && $file === $this->file) { return $this->dom; } $this->xpath = null; $this->file = $file; $file = $this->path . '/' . $file; $orignalLibEntityLoader = libxml_disable_entity_loader(false); $this->dom = new \DOMDocument(); $this->dom->load($file); libxml_disable_entity_loader($orignalLibEntityLoader); return $this->dom; } /** * Get node list * * @param string $path * @param string $file * @return \DOMNodeList */ public function getNodeList($path, $file = '') { if (!$file) { $file = $this->defaultFile; } if (null === $this->dom || $file !== $this->file) { $this->getFileDom($file); } if (null === $this->xpath) { $this->xpath = new \DOMXPath($this->dom); $this->xpath->registerNamespace('w14', 'http://schemas.microsoft.com/office/word/2010/wordml'); } return $this->xpath->query($path); } /** * Get element * * @param string $path * @param string $file * @return \DOMElement */ public function getElement($path, $file = '') { if (!$file) { $file = $this->defaultFile; } $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 = '') { if (!$file) { $file = $this->defaultFile; } return $this->getElement($path, $file)->getAttribute($attribute); } /** * Check if element exists * * @param string $path * @param string $file * @return string */ public function elementExists($path, $file = '') { if (!$file) { $file = $this->defaultFile; } $nodeList = $this->getNodeList($path, $file); return $nodeList->length != 0; } /** * Returns the xml, or part of it as a formatted string * * @param string $path * @param string $file * @return string */ public function printXml($path = '/', $file = '') { if (!$file) { $file = $this->defaultFile; } $element = $this->getElement($path, $file); if ($element instanceof \DOMDocument) { $element->formatOutput = true; $element->preserveWhiteSpace = false; return $element->saveXML(); } $newdoc = new \DOMDocument(); $newdoc->formatOutput = true; $newdoc->preserveWhiteSpace = false; $node = $newdoc->importNode($element, true); $newdoc->appendChild($node); return $newdoc->saveXML($node); } }