Beispiel #1
0
/**
 * Attempt to construct an ODD object out of a XmlElement or sub-elements.
 *
 * @param XmlElement $element The element(s)
 *
 * @return mixed An ODD object if the element can be handled, or false.
 */
function ODD_factory(XmlElement $element)
{
    $name = $element->name;
    $odd = false;
    switch ($name) {
        case 'entity':
            $odd = new ODDEntity("", "", "");
            break;
        case 'metadata':
            $odd = new ODDMetaData("", "", "", "");
            break;
        case 'relationship':
            $odd = new ODDRelationship("", "", "");
            break;
    }
    // Now populate values
    if ($odd) {
        // Attributes
        foreach ($element->attributes as $k => $v) {
            $odd->setAttribute($k, $v);
        }
        // Body
        $body = $element->content;
        $a = stripos($body, "<![CDATA");
        $b = strripos($body, "]]>");
        if ($body && $a !== false && $b !== false) {
            $body = substr($body, $a + 8, $b - ($a + 8));
        }
        $odd->setBody($body);
    }
    return $odd;
}