如何将xml文件转换为php数组?

时间:2015-10-29 13:46:10

标签: php arrays xml

我有像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文件..

2 个答案:

答案 0 :(得分:0)

看起来像普通的xml,请试试这个

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

答案 1 :(得分:0)

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>