2017-01-18 26 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”] => string(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或解析无名称空间。谢谢您的帮助。 –