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


Parsing XML - get node based on children

我正在努力获得基于子节点的节点。所以我不想通过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>

您需要使用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