当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP SimpleXMLElement XPath()用法及代码示例


前提条件: 阅读XML基础

SimpleXMLElement::xpath()函数是PHP中的一个内置函数,该函数在XML文档上运行XPath查询。

用法:


SimpleXMLElement::xpath( $path )

参数:该函数接受必需的单个参数$path。它用于指定XML文档的XPath路径。

返回值:如果成功,则返回SimpleXMLElements数组;如果失败,则返回False。

注意:此函数在PHP 5.2.0和更高版本上可用。

例:

<?php 
  
// Loading XML document to $user 
$user = <<<XML 
<user> 
    <id>12345</id> 
    <username>Geeks123</username> 
    <name>GeeksforGeeks</name> 
    <phone>+91-XXXXXXXXXX</phone> 
    <detail font-color="blue" font-size="24px"> 
        Noida India 
    </detail> 
</user> 
XML; 
  
// Loading string as simple xml object 
$xml = simplexml_load_string($user); 
  
// Retrieving xpaths 
$result = $xml->xpath("username"); 
  
// Printing output 
print_r($result); 
   
?>
输出:
Array
(
    [0] => SimpleXMLElement Object
        (
            [0] => Geeks123
        )

)

范例2:

<?php 
  
// Loading XML document to $user 
$user = <<<XML 
<user xmlns:user_id="http://geeksforgeeks.org/user"> 
<single_user id="1"> 
    <user_id:id>12345</user_id:id> 
    <username>Geeks123</username> 
    <name>GeeksforGeeks</name> 
    <phone>+91-XXXXXXXXXX</phone> 
    <detail font-color="blue" font-size="24px"> 
        Noida India 
    </detail> 
</single_user> 
  
<single_user id="2"> 
    <user_id:id>15980</user_id:id> 
    <username>Geeks54321</username> 
    <name>Geeks</name> 
    <phone>+91-XXXXXXXXXX</phone> 
    <detail font-color="blue" font-size="24px"> 
        Noida India 
    </detail> 
</single_user> 
</user> 
XML; 
  
// Loading string as simple xml object 
$xml = simplexml_load_string($user); 
  
// Registering xpath namespace 
$xml->registerXPathNamespace('u', 'http://geeksforgeeks.org/user'); 
  
// Retrieving xpaths 
$result = $xml->xpath('//u:id'); 
  
// Printing output 
foreach ($result as $id) { 
    echo $id . "<br>"; 
} 
  
?>
输出:
12345
15980

范例3:

<?php 
  
// Loading XML document to $user 
$user = <<<XML 
<user xmlns:user_id="http://geeksforgeeks.org/user"> 
    <single_user id="1" xmlns:name="http://geeksforgeeks.org/user/name"> 
        <user_id:id>12345</user_id:id> 
        <username>rakesh123</username> 
        <name:firstname>Rakesh</name:firstname> 
        <name:lastname>Kumar</name:lastname> 
        <phone>+91-XXXXXXXXXX</phone> 
        <detail>Noida India</detail> 
    </single_user> 
      
    <single_user id="2" xmlns:name="http://geeksforgeeks.org/user/name"> 
        <user_id:id>57833</user_id:id> 
        <username>man123</username> 
        <name:firstname>Manjeet</name:firstname> 
        <name:lastname>Singh</name:lastname> 
        <phone>+91-XXXXXXXXXX</phone> 
        <detail>Kolkata, India</detail> 
    </single_user> 
      
    <single_user id="3" xmlns:name="http://geeksforgeeks.org/user/name"> 
        <user_id:id>98944</user_id:id> 
        <username>ak98</username> 
        <name:firstname>Ak</name:firstname> 
        <name:lastname>Singh</name:lastname> 
        <phone>+91-XXXXXXXXXX</phone> 
        <detail>Noida India</detail> 
    </single_user> 
</user> 
XML; 
  
// Loading string as simple xml object 
$xml = simplexml_load_string($user); 
  
// Registering xpath namespace 
$xml->registerXPathNamespace('u', 'http://geeksforgeeks.org/user'); 
$xml->registerXPathNamespace('un', 'http://geeksforgeeks.org/user/name'); 
  
// Retrieving xpaths 
$result = $xml->xpath('//u:id'); 
$result_f_name = $xml->xpath('//un:firstname'); 
$result_l_name = $xml->xpath('//un:lastname'); 
  
// Printing output 
foreach ($result as $id) { 
    echo $id . "<br>"; 
} 
     
foreach ($result_f_name as $f_name) { 
    echo $f_name . "<br>"; 
} 
  
foreach ($result_l_name as $l_name) { 
    echo $l_name . "<br>"; 
} 
  
?>
输出:
12345
57833
98944
Rakesh
Manjeet
Ak
Kumar
Singh
Singh

参考: https://www.php.net/manual/en/simplexmlelement.xpath.php



相关用法


注:本文由纯净天空筛选整理自gekcho大神的英文原创作品 PHP | SimpleXMLElement XPath() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。