php: структура таблицы разбора с SimpleXML - PullRequest
4 голосов
/ 13 ноября 2009

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

1 Ответ

4 голосов
/ 13 ноября 2009

Вы можете использовать simpleXML с выражением XPath.

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

Это даст вам все значения узлов TD, которые имеют атрибут name, например,

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, как предложил Джош.

...