PHP-SimpleXML xpath函数获取特定节点的值

时间:2018-08-07 09:33:16

标签: php xml xpath xquery simplexml

XML的条目类似于:

<?xml version="1.0"?>
<buildings  xmlns='<NS-URL-here>'>
    <building>
            <Address>           
                <commons:FullStreetAddress>1234 Forest Hills Dr</commons:FullStreetAddress>
                <commons:UnitNumber>LA - UNO</commons:UnitNumber>
                <commons:City>Coral Springs</commons:City>
                <commons:StateOrProvince>FL</commons:StateOrProvince>
                <commons:PostalCode>33065</commons:PostalCode>
                <commons:Country>US</commons:Country>
            </Address>
            .
            .
            .
            <Offices>
                <Office>
                    <Address>
                    <commons:FullStreetAddress>4567 City Hills Dr</commons:FullStreetAddress>
                <commons:UnitNumber>Office - UNO</commons:UnitNumber>
                <commons:City>Transels Springs</commons:City>
                <commons:StateOrProvince>FL</commons:StateOrProvince>
                <commons:PostalCode>75045</commons:PostalCode>
                <commons:Country>US</commons:Country>
                </Address>
            </Office>
            </Offices>
    </building>
 ...
...
...

    </buildings>

我需要从建筑物地址中感染FullStreetAddress。不是来自办公室地址。 我使用下面的代码来获取,如果不存在完整的地址,它将返回办公室的完整地址。

如何仅从建筑物地址节点获取完整地址。

我的代码:

$building_address = $listing_node->xpath("//commons:FullStreetAddress");

1 个答案:

答案 0 :(得分:0)

最后,我找到了答案

代替

$building_address = $listing_node->xpath("//commons:FullStreetAddress");

(以上是从XML根节点到整个节点的搜索。)

我们应该使用

$building_address = $listing_node->Address->xpath("commons:FullStreetAddress");

这是用于在特定节点内搜索的。