如何在对象中搜索值?

时间:2009-03-09 09:56:48

标签: php xml search object

我有一个PHP脚本通过XML文件,但我希望能够在对象中搜索值,就像我可以在数组中搜索值一样。

根据PHP.net上的评论,array_search()支持从PHP5开始的对象,但我无法让它工作。

XML文件是公共汽车站的列表,我希望能够在匹配的公共汽车站之后搜索该对象。

当前代码如下所示,只列出止损:

$xml = new SimpleXMLElement(file_get_contents("StopPointList.xml"));

foreach ($xml->StopPoint as $stop)
{
    echo $stop->StopName.'<br />';
}

作为参考,总线停止XML文件如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StopPointList NetworkVersion="20080828">
    <StopPoint>
        <DISID>3012086:2</DISID>
        <PositionNumber>2</PositionNumber>
        <StopPointName>2</StopPointName>
        <StopName>Sinsenveien</StopName>
    </StopPoint>
    <StopPoint>
        <DISID>2160364:2</DISID>
        <PositionNumber>2</PositionNumber>
        <StopPointName>2</StopPointName>
        <StopName>Rogneskjær</StopName>
    </StopPoint>
</StopPointList>

我希望能够像这样进行类似MySQL的搜索:%search%

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我想说的是XPath(the spec / a tutorial)的用途。

例如:要查找名称包含"Sinsen"的所有停止点,这将是要使用的XPath表达式:

//StopPoint[contains(StopName, 'Sinsen')]

在PHP中,您可以使用SimpleXML (SimpleXMLElement::xpath)来执行此操作。