解析XML - 基于子节点获取节点

时间:2016-04-12 15:34:01

标签: php xml

我很想得到基于孩子的节点。因此我不想通过id 4061106获得完整的人。我正在使用SimpleXMLElement,现在我做了一个foreach循环来显示所有人,但我无法弄清楚如何获取特定的id。我甚至不知道从哪里开始。

<list>
        <person>
            <id>4061106</id>
            <name>Stefan</name>
            <country></country>
            <is_admin>0</is_admin>
            <lastCallbackTime></lastCallbackTime>

        </person>
        <person>
            <id>4082930</id>
            <name>Mike</name>
            <is_admin>0</is_admin>
            <lastCallbackTime></lastCallbackTime>

        </person>
</list>

1 个答案:

答案 0 :(得分:2)

您需要使用Xpath查找具有正确值的节点,然后跳回到父节点。

$xml = '
  <list>
    <person>
      <id>4061106</id>
      <name>Stefan</name>
      <country></country>
      <is_admin>0</is_admin>
      <lastCallbackTime></lastCallbackTime>
    </person>
  </list>
';

$sxml = simplexml_load_string($xml);
$person = $sxml->xpath('/list/person/id[.="4061106"]/parent::person')[0];

echo (string) $person->name; // Stefan