PHPXML:如何通过其同级获取NodeValue?

PHPXML:如何通过其同级获取NodeValue?,php,xml,simplexml,Php,Xml,Simplexml,xml的示例: <books> <book> <title>Hip Hop Hippo</title> <released>31-12-9999</released> </book> <book> <title>Bee In A Jar</title> <released>01-01-0001</released&g

xml的示例:

<books>
  <book>
    <title>Hip Hop Hippo</title>
    <released>31-12-9999</released>
  </book>
  <book>
    <title>Bee In A Jar</title>
    <released>01-01-0001</released>
  </book>
</books>

嘻哈河马
31-12-9999
罐子里的蜜蜂
01-01-0001
我想做一个函数,返回书名的发布日期。 我想知道《嘻哈河马》这本书的发行日期

我知道我可以使用
simplexml
并编写
->book[0]->发布的
。但是,只有当我有一个静态XML并且我知道与“嘻哈河马”匹配的
->书[$I]->标题
时,这才有效。但不是在动态情况下。我不能预测每一个变化,因为它来自一个API提供者。它可以是
book[1]
book[2]
,等等


我应该在函数中写什么?

查看xpath函数

然后,您将能够编写如下查询:/books/book[title=“Hip Hop Hippo”]

$string=title.'/'$节点->发布;
回音“”;
}

查看xpath函数

然后,您将能够编写如下查询:/books/book[title=“Hip Hop Hippo”]

$string=title.'/'$节点->发布;
回音“”;
}

谢谢!我听说过这个功能。但是在php手册中,它没有解释我可以在括号中使用什么运算符,比如
@
,等等。您可以解释或链接解释吗?@用于属性值,“.”表示当前上下文,“./”可用于递归备份xml树,例如//title[../released=”“],双反斜杠将从XML树中的任意位置开始,其中单反斜杠来自根。关于
*
?哦,我在php手册中看到一条注释,使用条件函数,比如[.>'40']。太多xpath查询了,我不知道。谢谢!我听说过这个功能。但是在php手册中,它没有解释我可以在括号中使用什么运算符,比如
@
,等等。您可以解释或链接解释吗?@用于属性值,“.”表示当前上下文,“./”可用于递归备份xml树,例如//title[../released=”“],双反斜杠将从XML树中的任意位置开始,其中单反斜杠来自根。关于
*
?哦,我在php手册中看到一条注释,使用条件函数,比如[.>'40']。太多xpath查询了,我都不知道。
$string = <<<XML
<books>
  <book>
    <title>Hip Hop Hippo</title>
    <released>31-12-9999</released>
  </book>
  <book>
    <title>Hip Hop Hippo</title>
    <released>31-12-2000</released>
  </book>
  <book>
    <title>Bee In A Jar</title>
    <released>01-01-0001</released>
  </book>
</books>
XML;

$xml = new SimpleXMLElement($string);

$result = $xml->xpath('/books/book[title="Hip Hop Hippo"]');

foreach($result as $key=>$node)
{
  echo '<li>';
  echo $node->title . ' / ' . $node->released;
  echo '</li>';
}