Определить родительский узел DOMElement

Я перевожу свой код C# для комментариев к видео YouTube на PHP. Чтобы правильно вложить ответы на комментарии, мне нужно переупорядочить узлы XML. В PHP я использую DOMDocument и DOMXPath, что близко соответствует C# XmlDocument. Я довольно далеко продвинулся в своем переводе, но теперь я застрял на получении родительского узла DOMElement. DOMElement не имеет свойства parent_node (), только DOMNode предоставляет это свойство.

После определения того, что комментарий является ответом на предыдущий комментарий на основе строки «in-reply-to» в элементе ссылки, мне нужно получить его родительский узел, чтобы вложить его под комментарием, на который он отвечает:

// Get the parent entry node of this link element
$importnode = $objReplyXML->importNode($link->parent_node(), true);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
14
0
27 516
3

Ответы 3

DOMElement является подклассом DOMNode, поэтому у него есть свойство parent_node. Просто используйте $ domNode-> parentNode; чтобы найти родительский узел.

В вашем примере родительский узел $ importnode имеет значение null, потому что он был импортирован в документ и, следовательно, еще не имеет родительского узла. Вам нужно прикрепить его к другому элементу, прежде чем у него появится родительский элемент.

DOMElement расширяет DOMNode, а DOMNode::parentNode является общедоступным, поэтому это свойство также доступно для DOMElement. php.net/manual/en/class.domnode.php и php.net/manual/en/class.domelement.php

feeela 06.09.2011 19:30

Я не совсем уверен, как работает ваш код, но похоже, что в вашем коде есть небольшая ошибка.

В строке, которую вы разместили в своем вопросе, у вас есть $link->parent_node(), но в ответе со всем фрагментом кода у вас есть $link**s**->parent_node().

Я не думаю, что там должен быть s.

Кроме того, я думаю, вам следует использовать $ link-> parentNode, а не $ link-> parent_node ().

Заменить parent_node() на parentNode

Другие вопросы по теме