Как simplexml обрабатывает элементы с префиксом? - PullRequest
0 голосов
/ 22 марта 2012

в приложении simplexml преобразовывает RSS-канал в объект, и на элементы было чрезвычайно легко ссылаться.являются префиксными элементами (например, <this:that>), на которые ссылаются так же, как и без префиксного элемента ($item->this) в объекте.

В руководстве по php.net я не нашел никакой информации.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Не совсем. Когда вы выполните print_r() или var_dump() объекта, представляющего XML с пространством имен, вы заметите, что все узлы с пространством имен отсутствуют. Есть несколько способов получить узлы пространства имен. Одним из способов является использование registerXPathNamespace () в сочетании с xpath () :

$xml = simplexml_load_file('some/namespaced/xml/file.xml');
$xml->registerXPathNamespace('prefix', 'http://Namespace/Uri/Here');
$xml->xpath('//prefix:node'); //get all <prefix:node> XML nodes.

Другой способ - использовать children () для получения дочерних узлов:

$xml = simplexml_load_file('some/namespaced/xml/file.xml');
$xml->children('prefix', true); //get all nodes with the 'prefix' prefix that are direct descendants of the root node.
$xml->someNode->children('blah', true); //get all nodes with the 'blah' prefix that are direct descendants of <someNode>
0 голосов
/ 22 марта 2012

Что вы ищете, это registerXPathNamespace () .Вы регистрируете каждое пространство имен, а затем можете использовать каждый узел, как обычно.

...