php: структура таблицы синтаксического анализа с помощью SimpleXML

Я пытаюсь прочитать в 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 ?

Related of "php: структура таблицы синтаксического анализа с помощью SimpleXML"

Вы можете использовать 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, как предположил Джош.