在xPath内部使用多个过滤器无法正确过滤

时间:2018-07-11 13:26:09

标签: xml xpath

对于每个<Reader>节点,我都有以下状态节点:<Status><WebChatStatus><WebCamStatus>

这些节点中的每个节点都有三个可用值:AvailableBusyLogged Off

我正在尝试过滤XML提要,该提要仅返回<WebChatStatus>Available<Status><WebCamStatus>不是Busy的读者

因此,最终,我想向读者展示谁可以使用Webchatstatus,但如果他们的Webcamstatus或Status繁忙,则不可以。

这是我拥有的,但这只是吸引每个读者而不论其状态如何:

$webchatReaders = $xml->xpath('/ReaderDetails/Reader[WebChatStatus = "Available" and Status != "Busy" or WebCamStatus != "Busy"]');

XML文件示例:

<ReaderDetails>
    <Reader> // Should not be displayed
        <Status>Available</Status>
        <WebChatStatus>Logged Off</WebChatStatus>
        <WebCamStatus>Logged Off</WebCamStatus>
    </Reader>
    <Reader> // Should not be displayed
        <Status>Busy</Status>
        <WebChatStatus>Available</WebChatStatus>
        <WebCamStatus>Logged Off</WebCamStatus>
    </Reader>
    <Reader> // Should be displayed
        <Status>Logged Off</Status>
        <WebChatStatus>Available</WebChatStatus>
        <WebCamStatus>Logged Off</WebCamStatus>
    </Reader>
    <Reader> // Should not be displayed
        <Status>Busy</Status>
        <WebChatStatus>Busy</WebChatStatus>
        <WebCamStatus>Logged Off</WebCamStatus>
    </Reader>
</ReaderDetails>

1 个答案:

答案 0 :(得分:1)

尝试在XPath下获取所需的输出:

/ReaderDetails/Reader[WebChatStatus = "Available" and Status != "Busy" and WebCamStatus != "Busy"]