我正在尝试从多个XML Feed中获取数据并将该数据复制到我的本地数据库。我已经尝试过研究SimpleXML以及我在网上找到的其他一些东西,但我想知道用这样的东西最好的路线。
我正在寻找的东西不仅可以从安全位置获取XML,还可以将其转换为一系列数组。
答案 0 :(得分:3)
这是一个非常简单的过程,您可以使用CURL和某种XML到数组类来完成。我会在这里给你详细说明。
PHP:
/* run mozilla agent */
$agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $agent); //make it act decent
curl_setopt($ch, CURLOPT_URL, $url); //set the $url to where your request goes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //set this flag for results to the variable
curl_setopt($ch, CURLOPT_POST, 1); //if you're making a post, put the data here
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); //as a key/value pair in $post
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //This is required for HTTPS certs if
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //you don't have some key/password action
/* execute the request */
$result = curl_exec($ch);
curl_close($ch);
/* now parse the resulting XML using XMLToArray class from
Razzaque Rupom http://groups.yahoo.com/group/phpresource/ */
require_once('lib/class.XmlToArray.php');
$parser = new XmlToArray($result);
$data = $parser->createArray();
你有它。
答案 1 :(得分:0)
使用SimpleXML时,您将XML作为包含节点数组的对象。由于简单性和整体性能,我个人更喜欢使用SimpleXML而不是任何其他XML解析器。在操作数据时,它很容易用作DOM操纵符,并且在用作XPath解析器时很容易检索少量节点。
如果你遍历一个非常大的XML文件,你可能会更好地使用加载懒惰的直接SAX解析器,但是因为你正在通过网络阅读,我认为性能差异是可以忽略不计的。
答案 2 :(得分:0)
使用cURL(http://php.net/manual/en/ref.curl.php)从https位置获取数据,然后使用simplexml_load_string来加载数据。