Я пытаюсь прочитать в 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>
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; } } }
Вы также можете посмотреть эту статью .
Изменить Исправлено выражение XPath, как предположил Джош.