我正在尝试读取一个 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>
block ,它全部被 <table>
包围.
我如何读入值,所有行都被命名为 <td>
name
?
最佳答案
您可以将 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 表达式。
关于php: 使用 SimpleXML 解析表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1730428/