在PHP中可以用simplexml_load_file或者simplexml_load_string 方便地进行XML的分析,载入用print_r输出,可以看到输出了一个SimpleXMLElement Object数组,如下:
- $fileName = 't5.xml';
- $xml = simplexml_load_file($fileName);
- print_r($xml);
- //输出的结果为:
- SimpleXMLElement Object
- (
- [msg_code] => 3
- [msg] => 服务器端还有数据文件需要下载,请继续调用本接口下载数据文件
- [fileInfos] => SimpleXMLElement Object
- (
- [hashAlgorithm] => 0
- [compressionFormat] => 0
- [encryptAlgorithm] => 1
- [return_FileName] => 20100202143300_fujian_168.xml
- [beianInfo] => QXiI5v4+r2KWils6xuoueeIKzhEY2pJ+NZHZGv8LY7zxRWHbQBpOW7i81SiUbj
- [beianInfoHash] => Vk7HjzNUZAa1a+M1jSe31g==
- )
- )
此时可以使用 数组的调用方式,直接输出相应的索引项,比如 echo xml['msg'] 浏览器是可以正常输出的。
但是如果此时想把这个项赋值给一个变量或存入数据库,你会发现无法正常使用,为什么呢?
原因就是他是一个SimpleXMLElement Object,并不是一个标准的普通的数组项。此时如何才能简化使用呢。
非常简单,看如下几行代码:
- $fileName = 't5.xml';
- $xml = simplexml_load_file($fileName);
- $xml = (array)$xml;
- print_r($xml);
- //输出的结果为:
- Array
- (
- [msg_code] => 3
- [msg] => 服务器端还有数据文件需要下载,请继续调用本接口下载数据文件
- [fileInfos] => SimpleXMLElement Object
- (
- [hashAlgorithm] => 0
- [compressionFormat] => 0
- [encryptAlgorithm] => 1
- [return_FileName] => 20100202143300_fujian_168.xml
- [beianInfo] => QXiI5v4+r2KWils6xuoueeIKzhEY2pJ+NZHZGv8LY7zxRWHbQBpOW7i81SiUbj
- [beianInfoHash] => Vk7HjzNUZAa1a+M1jSe31g==
- )
- )
对比一下,上面的代码仅添加了一行 $xml = (array)$xml;
此时输出的内容中,第7行,已经由SimpleXMLElement Object 变为 Array 了。
其实就这么简单,只需要在需要调用的时候前用(array)转化为常规数组即可正常调用。
