getDomFromZip($this->docFile, $this->xmlFile); $nodes = $xmlReader->getElements('*'); if ($nodes->length > 0) { foreach ($nodes as $node) { $id = $xmlReader->getAttribute('w:id', $node); $type = $xmlReader->getAttribute('w:type', $node); // Avoid w:type "separator" and "continuationSeparator" // Only look for or without w:type attribute, or with w:type = normal if ((null === $type || $type === 'normal')) { $element = $this->getElement($phpWord, $id); if ($element !== null) { $pNodes = $xmlReader->getElements('w:p/*', $node); foreach ($pNodes as $pNode) { $this->readRun($xmlReader, $pNode, $element, $this->collection); } $addMethod = "add{$this->element}"; $phpWord->$addMethod($element); } } } } } /** * Searches for the element with the given relationId. * * @param int $relationId * * @return null|\PhpOffice\PhpWord\Element\AbstractContainer */ private function getElement(PhpWord $phpWord, $relationId) { $getMethod = "get{$this->collection}"; $collection = $phpWord->$getMethod()->getItems(); //not found by key, looping to search by relationId foreach ($collection as $collectionElement) { if ($collectionElement->getRelationId() == $relationId) { return $collectionElement; } } return null; } }