powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / SimpleXml + INPUT
2 сообщений из 2, страница 1 из 1
SimpleXml + INPUT
    #37839644
lexxyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги.
Прошу помощи, сломал мозг, не понимаю, в чем проблема. Пытаюсь парсить XML вида:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:my='http://google.ru/my'>
    <config></config>
    <content>
        <body>
            <div>
                <input type='checkbox' />
            </div>
            <table style='width: 100%' border='1'>
                <tr>
                    <td>
                        <my:content />
                    </td>
                </tr>
            </table>
        </body>
    </content>
</root>


Нужно получить список тегов с моим namespace. Делаю так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
...
$xmlstring = file_get_contents($Path);
$this->xml = simplexml_load_string($xmlstring);
$node = $this->xml->content;
$this->areas = $this->GetMyElements($node);
...

private function GetMyElements($parentNode)
    {
        $arr = array();
        foreach ($parentNode as $entry)
        {
            $namespaces = $entry->getNameSpaces(true);
            $ele = $entry->children($namespaces['my']);
            $arr = array_merge($arr, (array) $ele);

            $cele = $entry->children();

            if ($cele->count() > 0)
            {
                $arr = array_merge($arr, $this->GetMyElements($cele));
            }
        }

        return $arr;
    }


В итоге на выходе кроме тегов с моим namespace попадает еще тег INPUT.
Подскажите, что нужно докрутить, что бы INPUT не попадал?
...
Рейтинг: 0 / 0
SimpleXml + INPUT
    #37861130
lexxyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После небольшой кучки тестов стало ясно, в чем проблема. Дело было в том, что оператор
Код: php
1.
$namespaces = $entry->getNameSpaces(true);

выполнялся внутри рекурсии, соответственно, получал пустой namespace и брал очередную ноду. под этот кретерий и попадал input. Наверное статья будет кому-то полезной, но надеюсь невнимательность обойдет вас стороной.

Спасибо всем, кто читал и кто попытался помочь разобраться.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / SimpleXml + INPUT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]