XML内容转换为PHP变量

时间:2015-01-21 13:51:39

标签: php arrays xml variables

我已经在这几个小时了,真的无法让它工作......我在xml文件中有以下内容:

<stores data="4850" times="01010101">
  <folder info="storage" DateTime="datetime1" update="212121012" versionNumber="ver1" url="http://url1" locater="location1"/>
  <folder info="images" DateTime="datetime2" update="1421748774" versionNumber="ver2" url="http://url2" locater="location2"/>
</stores data>

我需要使用PHP将每个元素放入一个不同的变量中。这是我的代码,它获取xml文件并将其打印出来,但在此之后我就陷入了困境。

$xml_ip = simplexml_load_file('file.xml');
print_r($xml_ip);

有了这个,我在屏幕上看到了一个看起来像数组的东西,但是我无法将所有的xml条目都变成变量。

感谢。

1 个答案:

答案 0 :(得分:1)

这不是有效的XML,如果你使XML有效,它将起作用

所以将文件更改为

<stores data="4850" times="01010101">
  <folder info="storage" DateTime="datetime1" update="212121012" versionNumber="ver1" url="http://url1" locater="location1"/>
  <folder info="images" DateTime="datetime2" update="1421748774" versionNumber="ver2" url="http://url2" locater="location2"/>
</stores>

我所做的就是解决这条问题

</stores data>

复制/粘贴每次都能帮到你!!!

然后你会得到这个: -

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [data] => 4850
            [times] => 01010101
        )
    [folder] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [info] => storage
                            [DateTime] => datetime1
                            [update] => 212121012
                            [versionNumber] => ver1
                            [url] => http://url1
                            [locater] => location1
                        )
                )
            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [info] => images
                            [DateTime] => datetime2
                            [update] => 1421748774
                            [versionNumber] => ver2
                            [url] => http://url2
                            [locater] => location2
                        )
                )
        )
)

回复其他评论

您已将此数据存储在变量中,此行

$xml_ip = simplexml_load_file('file.xml');

创建一个名为$xml_ip

的PHP SimpleXMLElement对象

您现在需要了解如何处理此对象here is the documentation

这里有一小段代码可以打印出数据作为先行者。

$xml_ip = simplexml_load_file('file.xml');

echo $xml_ip->attributes()['data'] . PHP_EOL;
echo $xml_ip->attributes()['times'] . PHP_EOL;

foreach ( $xml_ip->folder as $xmlEltObj ) {

    foreach ($xmlEltObj->attributes() as $attr => $val) {
        echo '   '. $attr . " = " . $val.PHP_EOL;
    }

}

打印

4850
01010101
   info = storage
   DateTime = datetime1
   update = 212121012
   versionNumber = ver1
   url = http://url1
   locater = location1
   info = images
   DateTime = datetime2
   update = 1421748774
   versionNumber = ver2
   url = http://url2
   locater = location2