我有这种格式的XML
<hotels>
<hotel>
<id>285</id>
<name>Alexander</name>
<price>250 USD</price>
</hotel>
<hotel>
<id>678</id>
<name>Hilton</name>
<price>480 USD</price>
</hotel>
</hotels>
如何使用PHP获取id为678的酒店名称?
答案 0 :(得分:1)
使用simplexml_load_string()
解析xml字符串。然后遍历hotel
标记并检查id
$xml = simplexml_load_string($str);
foreach($xml->hotel as $hotel)
$hotel->id == "678" ? @$name = (string)$hotel->name : '';
echo $name;
在demo中查看结果
如果您不想使用foreach
,也可以使用DOMXpath
$doc = new DOMDocument();
$doc->loadXML($str);
$name = (new DOMXpath($doc))->query("//hotel[id[text()='678']]/name")[0]->nodeValue;
// Hilton
在demo中查看结果
答案 1 :(得分:0)
我希望这是您要寻找的东西:
$xmlstr = <<<XML
<hotels>
<hotel>
<id>285</id>
<name>Alexander</name>
<price>250 USD</price>
</hotel>
<hotel>
<id>678</id>
<name>Hilton</name>
<price>480 USD</price>
</hotel>
</hotels>
XML;
$hotel = new SimpleXMLElement($xmlstr);
$list = $hotel->hotel;
$count = count($list);
while($count > 0){
$count--;
$id = $hotel->hotel[$count]->id;
if($id == 678){
$name = $hotel->hotel[$count]->name;
echo $name;
}
}
答案 2 :(得分:0)
您可以使用SimpleXML和XPath查找酒店,而无需使用循环。
$data ='<hotels>
<hotel>
<id>285</id>
<name>Alexander</name>
<price>250 USD</price>
</hotel>
<hotel>
<id>678</id>
<name>Hilton</name>
<price>480 USD</price>
</hotel>
</hotels>';
$hotel = new SimpleXMLElement($data);
$hotel678 = $hotel->xpath("//hotel[id='678']");
echo $hotel678[0]->name;