123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace PhpOffice\Common\Tests;
- use PhpOffice\Common\XMLReader;
- class XMLReaderTest extends \PHPUnit\Framework\TestCase
- {
-
- public function testDomFromString()
- {
- $reader = new XMLReader();
- $reader->getDomFromString('<element attr="test"><child attr="subtest">AAA</child></element>');
- $this->assertTrue($reader->elementExists('/element/child'));
- $this->assertEquals('AAA', $reader->getElement('/element/child')->textContent);
- $this->assertEquals('AAA', $reader->getValue('/element/child'));
- $this->assertEquals('test', $reader->getAttribute('attr', $reader->getElement('/element')));
- $this->assertEquals('subtest', $reader->getAttribute('attr', $reader->getElement('/element'), 'child'));
- }
-
- public function testDomFromZip()
- {
- $pathResources = PHPOFFICE_COMMON_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR;
- $reader = new XMLReader();
- $reader->getDomFromZip($pathResources. 'reader.zip', 'test.xml');
- $this->assertTrue($reader->elementExists('/element/child'));
- $this->assertFalse($reader->getDomFromZip($pathResources. 'reader.zip', 'non_existing_xml_file.xml'));
- }
-
- public function testThrowsExceptionOnNonExistingArchive()
- {
- $pathResources = PHPOFFICE_COMMON_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR;
- $reader = new XMLReader();
- $reader->getDomFromZip($pathResources. 'readers.zip', 'test.xml');
- }
-
- public function testCountElements()
- {
- $reader = new XMLReader();
- $reader->getDomFromString('<element attr="test"><child>AAA</child><child>BBB</child></element>');
- $this->assertEquals(2, $reader->countElements('/element/child'));
- }
-
- public function testReturnNullOnNonExistingNode()
- {
- $reader = new XMLReader();
- $this->assertEmpty($reader->getElements('/element/children'));
- $reader->getDomFromString('<element><child>AAA</child></element>');
- $this->assertNull($reader->getElement('/element/children'));
- $this->assertNull($reader->getValue('/element/children'));
- }
-
- public function testShouldThrowExceptionIfNamespaceIsNotKnown()
- {
- try {
- $reader = new XMLReader();
- $reader->getDomFromString('<element><test:child xmlns:test="http://phpword.com/my/custom/namespace">AAA</test:child></element>');
- $this->assertTrue($reader->elementExists('/element/test:child'));
- $this->assertEquals('AAA', $reader->getElement('/element/test:child')->textContent);
- $this->fail();
- } catch (\Exception $e) {
- $this->assertTrue(true);
- }
- }
-
- public function testShouldParseXmlWithCustomNamespace()
- {
- $reader = new XMLReader();
- $reader->getDomFromString('<element><test:child xmlns:test="http://phpword.com/my/custom/namespace">AAA</test:child></element>');
- $reader->registerNamespace('test', 'http://phpword.com/my/custom/namespace');
- $this->assertTrue($reader->elementExists('/element/test:child'));
- $this->assertEquals('AAA', $reader->getElement('/element/test:child')->textContent);
- }
-
- public function testShouldThowExceptionIfTryingToRegisterNamespaceBeforeReadingDoc()
- {
- $reader = new XMLReader();
- $reader->registerNamespace('test', 'http://phpword.com/my/custom/namespace');
- }
- }
|