2017-01-18 2 views
0

Когда я пытаюсь получить пространства имен, у меня есть неправильный результат, расширение SimpleXML было загружено без ошибок.Загрузка SimpleXML не позволяет получить пространства имен

ПРИМЕЧАНИЕ. На локальном компьютере я также не могу воспроизвести, но в общем хосте он всегда воспроизводимый, есть ли причины?

Отрывок:

<?php 
$xmlString = <<<DATA 
<?xml version="1.0" ?> 
<some version="2.0" xmlns:a="test0" xmlns:b="test1" xmlns:c="test2"></some> 
DATA; 
$xml = simplexml_load_string($xmlString); 
var_dump($xml->getDocNamespaces()); 

Результат:

array(1) { 
    [""]=> 
    string(5) "test0" 
} 

Ожидаемое: получить

a=>test0, 
b=>test1, 
c=>test2 

Есть ли варианты или причины SimpleXML вообще не получает, что пространства имен?

P.S. Я попытался использовать simplexml_load_file, simplexml_import_dom (новый DomDocument -> loadXML ..), все они возвращают тот же результат

P.S.2.

PHP Version 5.6.29 
SimpleXML 
Simplexml support enabled 
Revision $Id: d7077fc935154236afb4fe70814ba358efdbdca4 $ 
Schema support enabled 
+0

Когда я запускаю свой код, я получаю следующее: массива (3) {[ "а"] = > string (5) "test0" ["b"] => string (5) "test1" ["c"] => строка (5) "test2"} – Michael

+0

Невозможно воспроизвести эту проблему http://codepad.org/yzCD0rYO – NID

+0

На локальном компьютере я также не могу воспроизвести, но на общем хосте это Всегда ли воспроизводимы, есть ли причины? –

ответ

0

Попробуйте это: http://codepad.org/GOggdpkJ

Я добавил верный getDocNamespaces(TRUE)

<?php 

$xml = <<<XML 
<?xml version="1.0" standalone="yes"?> 
<some version="2.0" xmlns:a="test0" xmlns:b="test1" xmlns:c="test2"></some> 
XML; 

$sxe = new SimpleXMLElement($xml); 

$namespaces = $sxe->getDocNamespaces(TRUE); 
var_dump($namespaces); 

?> 
+0

В связи с этим я должен согласиться с ответом, но проблема все еще существует, и я считаю единственной причиной размещения PHP-конфигурации или некоторых скомпилированных изменений. Локально все работает нормально. Итак, на данный момент мы можем использовать XMLReader или анализировать без пространств имен. Спасибо за помощь. –

Смежные вопросы