Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合两个XML和PHP_Php_Xml_Merge_Html Table - Fatal编程技术网

结合两个XML和PHP

结合两个XML和PHP,php,xml,merge,html-table,Php,Xml,Merge,Html Table,为了更好地使用,我正在尝试合并两个或多个xml文件。假设我有两个XML文件,我想在将它们的数据提取到一个表之前合并它们的内容 <table id="rounded-corner"> <tr> <th>Title</th> <th>Download Link</th> <th>Language</th> </t

为了更好地使用,我正在尝试合并两个或多个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>

标题
下载链接
语言
结果->内容作为$item)
{
回声“
“$item->movie。”“$item->language。”
";
}
?> 
你能给我举个例子说明怎么做吗?我不想为我拥有的每个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>

http://www.example.com
http://example.com/dldlink.php?lk=43543
mp3
http://example.com/dldlink.php?lk=87798
mp4

您可以将它们存储在中间数组中。例如:

$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数组获取所有值

您的问题实际上不是问如何连接两个XML文件,而是更准确地说,如何从两个文件中创建一个迭代器。这可以通过使用:


标题
下载链接
语言
结果->内容);
$content->append(新迭代器(simplexml_load_file('file2.xml')->results->content));
foreach($content as$item)
{
?>

检查其他/可能的重复项它们是简单的xml,格式相同但不同content@showerhead:这个问题还没有回答。但是我知道这个问题以前已经被问过和回答过了,TS真的应该使用搜索来寻找答案。你们为什么对这个问题投反对票?这不一样。另一个帖子是ab在合并xml文件时,TS希望在同一个表中显示来自2个xml文件的数据。存在差异。可捕获的致命错误:参数1传递给AppendIterator::append()必须实现接口迭代器,/home/中给出的SimpleXMLElement实例。您能告诉我如何在您发布的代码上实现它吗?@user1040157:当然,请查看编辑。这很有效。确保从XML中选择正确的元素,这里的元素不是XML示例中的元素(验证标记名)。如何使用xpath查询结果?@Mehmet您可以首先合并两个文件,或者对两个文件应用相同的xpath,并从xpath结果创建迭代器(在
xpath()上使用
ArrayIterator
返回数组时返回值)
<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>