PHP SimpleXML Get Value


PHP SimpleXML Get Value

<?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>

如何使用key: "siteTitle"访问lanString的值?我用下面的代码试过了:

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

但是没有输出:(

下面的代码使用您提供的相同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
        )
)

所以我认为你提供的代码是可以的。如果没有显示任何输出,则问题可能在其他地方…