Чтение тегов XML с использованием PHP для создания таблицы - PullRequest
0 голосов
/ 22 апреля 2011

У меня есть и XML-файл, который построен так:

<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>

Что я хочу сделать, так это добавить их в таблицу с помощью PHP, пока я написал этот код:

<?php
$dom = new DomDocument();
$dom -> load("file.xml");
$data = $dom->getElementsByTagName('Data'); 
echo( "<table><tr>");
foreach( $data as $node){ echo( "<td>". $node -> textContent . "<td>");}
echo( "</tr></table>");

?>

Проблема в том, что он добавляет все данные к тэгам td, которые становятся действительно длинными, и мне нужно сделать это, чтобы добавить тэг tr после 3 тэгов данных, которые были прочитаны.

В настоящее время создается что-то вроде:

* * 1010

Мне нужно, чтобы это было

<table>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
</table>

HELP! : -)

Ответы [ 2 ]

3 голосов
/ 22 апреля 2011

Немного измените ваш for цикл:

$n = 0;
foreach($data as $node)
{ 
    if($n % 3 == 0) { echo '<tr>'; }
    echo( "<td>". $node -> textContent . "<td>");
    if(++$n % 3 == 0) { echo '</tr>'; }
}

И удалите открывающие и закрывающие tr, которые у вас уже есть

0 голосов
/ 22 апреля 2011

Это включает в себя простое редактирование вашего кода. Если вы хотите, чтобы оно отображалось для каждой третьей записи , вам просто нужно переместить <tr> внутри цикла.

Это должно решить вашу проблему:

<?php
    $dom = new DomDocument();
    $dom -> load("file.xml");
    $data = $dom->getElementsByTagName('Data'); 

    $counter = 0; // Set the entry counter

    echo( "<table>");

    foreach($data as $node) {
        if ($counter % 3 == 0) {
            echo '<tr>';
        }

        echo "<td>". $node -> textContent . "<td>";

        if($counter % 3 == 0) {
            echo '</tr>';
        }

        $counter++; // Increment the counter
    }

    echo( "</table>");
?>

Это не самый чистый код, но должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...