php:使用SimpleXML解析表结构

php:使用SimpleXML解析表结构,php,simplexml,html-table,Php,Simplexml,Html Table,我试图读入一个xml文件,由于某种原因,该文件已在如下表结构中建模: <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" /> &l

我试图读入一个xml文件,由于某种原因,该文件已在如下表结构中建模:

<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>

10/01/2009
样本促销名称
促销代码示例
这只是一个示例行,该文件有多个
块,并且都被
包围


所有行都命名为

您可以将simpleXML与XPath表达式一起使用

$xml = simplexml_load_file('myFile.xml');
$values = $xml->xpath('//td[@name]');
foreach($values as $v) {
    echo "Found $v<br />";
}
$xml=simplexml\u load\u文件('myFile.xml');
$values=$xml->xpath('//td[@name]');
foreach(价值为$v){
echo“发现$v
”; }
这将为您提供所有具有名称属性的TD节点值,例如

Found 10/01/2009
Found Sample Promo Name
Found Sample Promo Code
Found <nothing cuz PromoLevel is empty>
发现于2009年1月10日
找到了示例促销名称
找到示例促销代码
建立
编辑要浏览所有表格行,可以执行以下操作:

$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;
      }
   }
}
$rows=$xml->xpath('//tr');
foreach($行作为$行){
echo$row['id'];
foreach($row->td作为$td){
如果($td['name'])){
echo$td['name'],':',$td,
',PHP_EOL; } } }
你可能还想看看

Edit按照Josh的建议修复了XPath表达式