加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php:使用SimpleXML解析表结构

发布时间:2020-12-13 17:02:01 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试读取一个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 这只是一个样本行,该文件有
我正在尝试读取一个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>

这只是一个样本行,该文件有多个< tr>块和它全部被< table>包围.

如何读取值,所有行都被命名为< td>名称?

解决方法

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

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

这将为您提供具有name属性的所有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建议的那样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读