/** * This particular xml body caused the parser to go into an infinite loop. * Need to know why. */ function testDeserialize() { $body = '<?xml version="1.0"?> <d:propertyupdate xmlns:d="DAV:" xmlns:s="http://sabredav.org/NS/test"> <d:set><d:prop></d:prop></d:set> <d:set><d:prop></d:prop></d:set> </d:propertyupdate>'; $reader = new Reader(); $reader->elementMap = ['{DAV:}set' => 'Sabre\\Xml\\Element\\KeyValue']; $reader->xml($body); $output = $reader->parse(); $this->assertEquals(['name' => '{DAV:}propertyupdate', 'value' => [['name' => '{DAV:}set', 'value' => ['{DAV:}prop' => null], 'attributes' => []], ['name' => '{DAV:}set', 'value' => ['{DAV:}prop' => null], 'attributes' => []]], 'attributes' => []], $output); }
/** * @depends testMappedElement */ function testParseInnerTree() { $input = <<<BLA <?xml version="1.0"?> <root xmlns="http://sabredav.org/ns"> <elem1> <elem1 /> </elem1> </root> BLA; $reader = new Reader(); $reader->elementMap = ['{http://sabredav.org/ns}elem1' => function (Reader $reader) { $innerTree = $reader->parseInnerTree(['{http://sabredav.org/ns}elem1' => function (Reader $reader) { $reader->next(); return "foobar"; }]); return $innerTree; }]; $reader->xml($input); $output = $reader->parse(); $expected = ['name' => '{http://sabredav.org/ns}root', 'value' => [['name' => '{http://sabredav.org/ns}elem1', 'value' => [['name' => '{http://sabredav.org/ns}elem1', 'value' => 'foobar', 'attributes' => []]], 'attributes' => []]], 'attributes' => []]; $this->assertEquals($expected, $output); }
/** * Test was added for Issue #10. * * @expectedException Sabre\XML\LibXMLException */ function testBrokenXML() { $input = <<<BLA <test> <hello> </hello> </sffsdf> BLA; $reader = new Reader(); $reader->xml($input); $reader->parse(); }