Вопрос по merge, xml, php, html-table – Объединить два XML PHP

-1

Я пытаюсь объединить два или более XML-файла для лучшего использования. Допустим, у меня есть два XML-файла, и я хочу объединить их содержимое, прежде чем извлекать их в таблицу.

<table id="rounded-corner">
    <tr>
            <th>Title</th>
            <th>Download Link</th>
            <th>Language</th>
    </tr>


<?php

        $xml_request_url = 'file.xml';
        $xml = new SimpleXMLElement($xml_request_url, null, true);



        foreach ( $xml->results->content as $item )
        {

        echo "


<tr><td>" . $item->movie . "</td><td><a href=" . $item->download . ">Download Link</a>    </td><td>" . $item->language . "</td></tr>
";

}

        ?> </table>

Можете ли вы дать мне пример того, как это сделать? Я не хочу создавать таблицы для каждого имеющегося у меня XML-файла.

<find>
<base>
http://www.example.com
</base>
<results items="2" itemsfound="2">
<song>
  <downloadlink>
  http://example.com/dldlink.php?lk=43543
  </downloadlink>
  <format>
  mp3
  </format>
</song>
<song>
  <downloadlink>
  http://example.com/dldlink.php?lk=87798
  </downloadlink>
  <format>
  mp4
  </format>
 </song>
 </results>
 </find>
это простой xml, одинаковый формат, но разный контент user1040157
Как эти 2 выглядят? TJHeuvel
@showerhead: На этот вопрос еще нет ответа. Однако я знаю, что этот вопрос задавался и отвечался ранее, TS должен действительно использовать поиск ответа. hakre
Проверьте это другоеpost / возможно дубликат mseancole
Это не то же самое. Другой пост о слиянии файлов XML, TS хочет отобразить данные из двух файлов XML в той же таблице. Есть разница. TJHeuvel

Ваш Ответ

2   ответа
2

На самом деле ваш вопрос не в том, как объединить два XML-файла, а в том, как создать один итератор из двух. Это возможно при использованииAppendIterator:

<table id="rounded-corner">
    <tr>
            <th>Title</th>
            <th>Download Link</th>
            <th>Language</th>
    </tr>
<?php

    $content = new AppendIterator();
    $content->append(new IteratorIterator(simplexml_load_file('file1.xml')->results->content));
    $content->append(new IteratorIterator(simplexml_load_file('file2.xml')->results->content));
    foreach($content as $item)
    {
?>
    <tr>
        <td><?= $item->movie ?></td>
        <td><a href="<?= $item->download ?>">Download Link</a></td>
        <td><?= $item->language ?></td>
    </tr>
<?php
    }
?>
</table>
как запросить результат с xpath?
Исправляемая фатальная ошибка: аргумент 1, переданный AppendIterator :: append (), должен реализовывать интерфейс Iterator, экземпляр SimpleXMLElement, указанный в / home / user1040157
я попробую прямо сейчас user1040157
@ user1040157: Конечно, смотрите редактирование. Это работает. Убедитесь, что вы выбрали правильные элементы из XML, которые здесь не те, что в вашем примере XML (проверьте имена тегов).
Можете ли вы показать мне, как это сделать с кодом, который вы опубликовали, пожалуйста? user1040157
0

Вы можете хранить их в промежуточном массиве. Например:

$files = array('test1.xml','test2.xml');
$data = array();
foreach($files as $file)
{
 $xml = new SimpleXMLElement($xml_request_url, null, true);
 foreach($xml as $node)
   $data[] = $node;
}

Затем используйте массив $ data, чтобы получить все значения.

Похожие вопросы