2009-12-11 77 views
0

我试图从多个XML源获取数据并将该数据复制到本地数据库。我试图研究SimpleXML和我在互联网上发现的其他一些东西,但我想知道用这样的东西采取什么最好的路线。从https URL获取XML

我正在寻找的东西不仅会从安全位置获取XML,还会将其转换为一系列数组。

回答

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

你可以在这里找到他所指的XmltoArray类:http://www.weberdev.com/get_example-4416.html – Webnet 2009-12-11 17:22:25

0

使用SimpleXML时,您将XML作为包含节点数组的对象。由于简单性和整体性能,我个人更喜欢使用SimpleXML而不是其他XML解析器。在操作数据时,它很容易用作DOM操纵器,并且在用作XPath解析器时,只需轻松检索少数几个节点。

如果您遍历一个非常大的XML文件,您可能会更好地使用加载懒惰的直线式SAX解析器,但是由于您通过网络读取,我认为性能差异可以忽略不计。