2009-11-13 70 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建议的那样。