Получение узлов значением атрибута в DomXML и PHP

Я пытаюсь выбрать определенный узел, чтобы отредактировать его содержание и признаки позже, но я не в состоянии выбрать уведомление узел (см. код PHP ниже).

XML-документ

<?xml version="1.0" encoding="UTF-8"?>

    <!--
    
        Content of the notice.
    
    -->
    
        One amazing notice.
    


$id стоимость равняется "0001" ( последовательность ).

PHP

$document = new DOMDocument;
$document = dom_import_simplexml($this->xml);

$notices= $document->getElementsByTagName('notice');
#var_dump($notices);

foreach($notices as $element)
{
    if($element->getAttribute('id') == $id)
    {
        $notice = $element;
        var_dump($notice); //Returns absolutely nothing (I guess the if returns false).
    }
}

$notice->removeAttribute("endDate");
$notice->setAttribute("endDate",$endDate);

Everytime I fall into the if statement, my $notice returns no value.
I tried with xpath query ( //notice[@id="{$id}"]) without any success.

To clarify, my problem would be $element->getAttribute('id') does not seem to work.


Я также попробовал SimpleXML :

PHP

$document = new DOMDocument;
$document = simplexml_import_dom($this->xml);

$notice = "";

foreach($document->notices->children() as $element)
{
    $attributes = $element->attributes();
    if($attributes['id'] == $id)
    {
        $notice= $element;
        var_dump($notice);
    }
}
$avis->removeAttribute("endDate");
$avis->setAttribute("endDate",$endDate);

SimpleXML дает мне следующее сообщение: Узел больше не существует на следующей линии:

foreach($document->notices->children() as $element)

0
nl ja de
Вы проверяли, что XML-документ загружается правильно? Не уверенный, если это - ответ или не, но попытка загрузить ваш файл DOMDocument:: груз() и вы don' t должен создать новый случай его DOMDocument .
добавлено автор MahanGM, источник

1 ответы

Я наконец получил его.

PHP

$document = simplexml_import_dom($this->xml);
$notice = "";

$xpathResults = $document->xpath('//notice');


foreach($xpathResults as $element)
{
    $elementID = $element->id[0];
    $domXML = dom_import_simplexml($element);

    if((string) $noticeID == $id)
    {
        $notice = $domXML;

    }
}
0
добавлено
Можно сделать это с xpath непосредственно. Вероятно, необходимо узнать почему это didn' t работа для вас, вероятно $id содержал что-то другое, или ваше выражение XPath было borked. Используйте переменные, в случае, если это не работает, вы можете var_dump те и видеть то, что продолжается: eval.in/6307
добавлено автор hakre, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp