/** * @param DOMNode $node * @param ReferenceTable $table */ public function next(DOMNode $node, ReferenceTable &$table) { foreach ($node->childNodes as $child) { /* * Text */ if ($child instanceof DOMTEXT) { $table->appendContentByNode($child); } elseif ($child instanceof DOMElement) { /* * Attributes */ foreach ($child->attributes as $attribute) { $parser = AttributeParserFactory::create($attribute->name, $this->sheet); if ($parser) { $parser->parse($attribute, $table); } } // Get the element parser based on the node name $parser = ElementParserFactory::create($child->nodeName, $this->sheet); // It's possible a parser does not exist // That means it's probably not very interesting // to parse that element if ($parser) { $parser->parse($child, $table); } else { $this->next($child, $table); } } } }
public function test_factory_returns_right_element() { $this->assertInstanceOf('Maatwebsite\\Clerk\\Excel\\Html\\Elements\\TrElement', ElementParserFactory::create('tr', $this->mockSheet())); $this->assertInstanceOf('Maatwebsite\\Clerk\\Excel\\Html\\Elements\\TdElement', ElementParserFactory::create('td', $this->mockSheet())); $this->assertInstanceOf('Maatwebsite\\Clerk\\Excel\\Html\\Elements\\ThElement', ElementParserFactory::create('th', $this->mockSheet())); }