【问题标题】:How to convert xml file to php array? [duplicate]如何将xml文件转换为php数组? [复制]
【发布时间】:2016-01-29 16:46:38
【问题描述】:

我有类似http://xxx.pl/tmp/tabela.xml 这样的奇怪xml 文件,我不知道如何将其转换为数组。我尝试过这样的事情:

<?php
$get = file_get_contents('http://xxx.pl/tmp/tabela.xml');
$arr = simplexml_load_string($get);
$data = $arr -> druzyna;
?>
<table>
    <tr>
        <th>pozycja</th>
        <th>pkt</th>
        <th>mecze</th>
        <th>zwyciestwa</th>
        <th>porazki</th>
        <th>wygrane w domu</th>
        <th>przegrane w domu</th>
        <th>wygrane na wyjezdzie</th>
        <th>przegrane na wyjezdzie </th>
        <th>kosze zdobyte</th>
        <th>kosze stracone</th>
        <th>stosunek zdobytych punktów do straconych punktów</th>
        <th>pelna nazwa klubu</th>
        <th>logo klubu</th>
    </tr>

    <?php foreach($data as $row) : ?>
    <tr>
        <td><?php echo $row->pozycja ?></td>
        <td><?php echo $row->pkt ?></td>
        <td><?php echo $row->mecze ?></td>
        <td><?php echo $row->zwyciestwa ?></td>
        <td><?php echo $row->porazki ?></td>
        <td><?php echo $row->wygrane_dom ?></td>
        <td><?php echo $row->przegrane_dom ?></td>
        <td><?php echo $row->wygrane_wyjazd ?></td>
        <td><?php echo $row->przegrane_wyjazd ?></td>
        <td><?php echo $row->kosze_zdobyte ?></td>
        <td><?php echo $row->kosze_stracone ?></td>
        <td><?php echo $row->stosunek_zdob_strac ?></td>
        <td><?php echo $row->pelna_nazwa ?></td>
        <td><?php echo $row->logo; ?></td>
    </tr>   
    <?php endforeach;?>
</table>

但它不起作用。

我阅读了一些关于json 解决方案的内容,但我不知道如何使用它,但是我第一次遇到xml 这样的格式。

我认为How to convert xml into array in php?这个话题不能解决我的问题,因为我还有另一个xml文件..

【问题讨论】:

    标签: php arrays xml


    【解决方案1】:

    simplexml_load_string 返回一个SimpleXMLElement 对象。您可以使用xpath() 函数查询对象(搜索您的数据)。

    由于您的 XML 文件的设置方式,这些值被设置为属性。 因此,您需要先检索属性,然后才能读取它们。

        <?php
    
        $get = file_get_contents('http://xxx.pl/tmp/tabela.xml');
        $arr = simplexml_load_string($get);
        $data = $arr->xpath('tabela/druzyna');
    
        ?>
        <table>
            <tr>
                <th>pozycja</th>
                <th>pkt</th>
                <th>mecze</th>
                <th>zwyciestwa</th>
                <th>porazki</th>
                <th>wygrane w domu</th>
                <th>przegrane w domu</th>
                <th>wygrane na wyjezdzie</th>
                <th>przegrane na wyjezdzie </th>
                <th>kosze zdobyte</th>
                <th>kosze stracone</th>
                <th>stosunek zdobytych punktów do straconych punktów</th>
                <th>pelna nazwa klubu</th>
                <th>logo klubu</th>
            </tr>
    
            <?php foreach($data as $row) : ?>
                <?php
                $row = $row->attributes();
                ?>
                <tr>
                    <td><?php echo $row->pozycja ?></td>
                    <td><?php echo $row->pkt ?></td>
                    <td><?php echo $row->mecze ?></td>
                    <td><?php echo $row->zwyciestwa ?></td>
                    <td><?php echo $row->porazki ?></td>
                    <td><?php echo $row->wygrane_dom ?></td>
                    <td><?php echo $row->przegrane_dom ?></td>
                    <td><?php echo $row->wygrane_wyjazd ?></td>
                    <td><?php echo $row->przegrane_wyjazd ?></td>
                    <td><?php echo $row->kosze_zdobyte ?></td>
                    <td><?php echo $row->kosze_stracone ?></td>
                    <td><?php echo $row->stosunek_zdob_strac ?></td>
                    <td><?php echo $row->pelna_nazwa ?></td>
                    <td><?php echo $row->logo; ?></td>
                </tr>
            <?php endforeach;?>
        </table>
    

    【讨论】:

    • moorscode 你的解决方案很棒,但是现在,我怎样才能分开两个表? ????
    • 使用 xpath,您可以专门搜索项目甚至属性,例如“runda”。 $data = $arr-&gt;xpath('tabela/druzyna/[@runda="Tabela Stosunek"]');
    • 非常感谢您的帮助,但它不起作用...我正在尝试另一个类似 $data = $arr->xpath('tabela/druzyna/@runda="Tabela Stosunek" ');没有“@”等......
    • 抱歉,该属性是 'tabela' 的一部分,所以它必须放在 xpath 查询中:$data = $arr-&gt;xpath('tabela[@runda="Tabela Stosunek"]/druzyna');
    • 我真的很感激..非常感谢..
    【解决方案2】:

    好像是正常的xml,请试试这个

     $url = "http://example.com/tmp/tabela.xml";
     $xml = file_get_contents($url);
     $xml = simplexml_load_string($xml);
     echo '<pre>';
     print_r($xml);
    

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2011-04-30
      相关资源
      最近更新 更多