private function createElement($name, $value = null, $raw = false) { if (is_null($value)) { $element = $this->dom->createElement($name); } elseif ('long-description' !== $name && strlen($value) > 0 && '<' === $value[0]) { // Skip long descriptions as they should always be inserted as elements and escaped. // This is terrible, but if first char looks like it's XML then just append the fragment. // This is to append pre-built XML from objects. $element = $this->dom->createDocumentFragment(); $element->appendXML('<' . $name . '>' . $value . '</' . $name . '>'); } else { $value = $raw ? Xml::sanitise($value) : Xml::escape($value); $element = $this->dom->createElement($name, $value); } return $element; }
public function testSanitise() { $invalidChar = chr(30); // Record Separator. $this->assertEquals('Foo Bar', Xml::sanitise('Foo' . $invalidChar . 'Bar')); }