<?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的值:&#34; siteTitle&#34; 我尝试了以下内容:
public function getString($key, $lan){
return $this->mXmlFile->xpath('language[@lan="'.$lan.'"]/lanString[@key="'.$key.'"]');
}
但没有输出:(
答案 0 :(得分: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
)
)
所以我认为你提供的代码是可以的。如果它没有显示任何输出,则问题可能在其他地方......