2014-07-05 3 views
0
<?xml version="1.0" encoding="UTF-8"?> 
<languages> 
    <language lan="de"> 
     <lanString key="siteTitle">Simple engine DE</lanString> 
    </language> 
    <language lan="en"> 
     <lanString key="siteTitle">Simple engine EN</lanString> 
     <lanString key="welcomeText">Welcome to Simple engine</lanString> 
    </language> 
</languages> 

내가 키와 lanString의 값에 액세스 할 수 있습니다 방법 :PHP SimpleXML을 얻기 값

public function getString($key, $lan){ 
    return $this->mXmlFile->xpath('language[@lan="'.$lan.'"]/lanString[@key="'.$key.'"]'); 
} 

을하지만 아무도 출력 :(

가 없다 "siteTitle" 나는 그것을 시도 다음

답변

0

다음 코드는 사용자가 제공 한 동일한 XML 및 XPath는()에 동일한 호출을 사용하여, 잘 작동 :

function getString($xml, $key, $lan){ 
    return $xml->xpath('language[@lan="'.$lan.'"]/lanString[@key="'.$key.'"]'); 
} 

$data = '<?xml version="1.0" encoding="UTF-8"?> 
    <languages> 
    <language lan="de"> 
     <lanString key="siteTitle">Simple engine DE</lanString> 
    </language> 
    <language lan="en"> 
     <lanString key="siteTitle">Simple engine EN</lanString> 
     <lanString key="welcomeText">Welcome to Simple engine</lanString> 
    </language> 
</languages>'; 

$xml = new SimpleXMLElement($data); 

print_r(getString($xml, "siteTitle", "de")); 

간단히하기 위해이 메소드를 간단한 함수로 변경했습니다. 그것은 밖으로 인쇄합니다 :

Array 
(
    [0] => SimpleXMLElement Object 
     (
      [@attributes] => Array 
       (
        [key] => siteTitle 
       ) 

      [0] => Simple engine DE 
     ) 
) 

그래서 내가 제공 한 코드는 괜찮다고 생각합니다. 출력이 표시되지 않으면 다른 곳에서 문제가 발생할 수 있습니다 ...