PHPXML:如何通过其同级获取NodeValue?
xml的示例: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
<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>';
}