【问题标题】:php: parsing table structure with SimpleXMLphp:使用 SimpleXML 解析表结构
【发布时间】:2010-12-16 08:53:11
【问题描述】:

我正在尝试读取一个 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>

这只是一个示例行,文件有多个&lt;tr&gt; 块,并且都被&lt;table&gt; 包围。

如果所有行都被命名为&lt;td&gt;name,我如何读取这些值?

【问题讨论】:

    标签: php simplexml html-table


    【解决方案1】:

    您可以将 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

    编辑按照 Josh 的建议修复了 XPath 表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多