public function testScanXmlWithDTD() { $xml = <<<XML <?xml version="1.0"?> <!DOCTYPE results [ <!ELEMENT results (result+)> <!ELEMENT result (#PCDATA)> ]> <results> <result>test</result> </results> XML; $result = XmlParser::getDomDocument($xml); $this->assertTrue($result instanceof DOMDocument); $this->assertTrue($result->validate()); }
/** * Strip useless tags * * @access public */ public function stripGarbage() { $dom = XmlParser::getDomDocument($this->content); if ($dom !== false) { $xpath = new DOMXPath($dom); foreach ($this->stripTags as $tag) { $nodes = $xpath->query('//' . $tag); if ($nodes !== false && $nodes->length > 0) { Logging::setMessage(get_called_class() . ' Strip tag: "' . $tag . '"'); foreach ($nodes as $node) { $node->parentNode->removeChild($node); } } } foreach ($this->stripAttributes as $attribute) { $nodes = $xpath->query('//*[contains(@class, "' . $attribute . '") or contains(@id, "' . $attribute . '")]'); if ($nodes !== false && $nodes->length > 0) { Logging::setMessage(get_called_class() . ' Strip attribute: "' . $attribute . '"'); foreach ($nodes as $node) { $node->parentNode->removeChild($node); } } } $this->content = $dom->saveXML($dom->documentElement); } }