2017-01-18 3 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" 
} 

가 예상 : SimpleXML을 네임 스페이스 것을 가져 오지 않는 이유의 옵션이나 이유가 있습니까

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

거야?

P. 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

getDocNamespaces(TRUE)에 충실 추가 한 내가 얻을 다음 배열 (3) {[ "A"] = > test1 "["c "] => 문자열 (5)"test2 "} – Michael

+0

이 문제를 재현 할 수 없습니다. http://codepad.org/yzCD0rYO – NID

+0

로컬 컴퓨터에서도 복제 할 수는 없지만 공유 호스트에서는 계속 재현 할 수있는 이유가 있습니까? –

답변

0

이 시도 : http://codepad.org/GOggdpkJ

내가 당신의 코드를 실행하면

<?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를 사용하거나 네임 스페이스없이 구문 분석 할 수 있습니다. 도와 주셔서 감사합니다. –

관련 문제