2009-11-13 121 views
4

我想在出於某種原因已被建模的表結構,像這樣的XML文件中讀取解析表結構:PHP:用SimpleXML

<tr id="1"> 
    <td name="Date">10/01/2009</td> 
    <td name="PromoName">Sample Promo Name</td> 
    <td name="PromoCode">Sample Promo Code</td> 
    <td name="PromoLevel" /> 
</tr> 

這只是一個樣本行,該文件有多個<tr>區塊,全部被<table>包圍。

如何讀取數值,並將所有行命名爲<td>name

回答

4

您可以將simpleXML與XPath表達式一起使用。

$xml = simplexml_load_file('myFile.xml'); 
$values = $xml->xpath('//td[@name]'); 
foreach($values as $v) { 
    echo "Found $v<br />"; 
} 

這將爲您提供所有具有名稱屬性的TD節點值,例如,

Found 10/01/2009 
Found Sample Promo Name 
Found Sample Promo Code 
Found <nothing cuz PromoLevel is empty> 

編輯要通過所有的錶行得到的,你可以做這樣的事情:

$rows = $xml->xpath('//tr'); 
foreach($rows as $row) { 
    echo $row['id']; 
    foreach($row->td as $td) { 
     if($td['name']) { 
      echo $td['name'],':',$td,'<br/>',PHP_EOL; 
     } 
    } 
} 

你也可能想看看this article

編輯修復了XPath表達式,如Josh建議的那樣。