$div->get_parent_node(); // Sadly, there's no such function.
Обратите внимание, что вы можете продлить SimpleXML, чтобы сделать так. Например:
class my_xml extends SimpleXMLElement
{
public function get_parent_node()
{
return current($this->xpath('parent::*'));
}
}
И теперь все, что вам нужно сделать, это изменить код, который вы используете для создания SimpleXMLElement в первую очередь:
$foo = new SimpleXMLElement('<foo/>');
// becomes
$foo = new my_xml('<foo/>');
$foo = simplexml_load_string('<foo/>');
// becomes
$foo = simplexml_load_string('<foo/>', 'my_xml');
$foo = simplexml_load_file('foo.xml');
// becomes
$foo = simplexml_load_file('foo.xml', 'my_xml');
Лучшая часть является то, что SimpleXML автоматически и прозрачно вернуться my_xml
объектов этого документа, так что вам не придется менять что-либо еще, что делает ваш get_parent_node()
метод змеевидным:
// returns $grandchild's parent's parent
$grandchild->get_parent_node()->get_parent_node();
Будет ли этот метод ** всегда ** возвращать одного родителя? Я замечаю, что возвращает массив. – mrClean