2011-04-12 88 views
1

我有一個簡單的PHP應用程序,使用,其中包括每小時更新一次的外部XML文件。
我只需要使用該文件的一個字段,因此我使用了simplexml_load_file()
問題是,此功能僅適用於當前保存在服務器上的文件,而不是外部文件。加載XML文件到服務器

如何在服務器上定期下載XML文件(每次刷新下載都可以)?謝謝。

回答

2
<?php 
copy('http://www.example.com/', 'local-file.xml'); 
?> 

copy可以在存儲器中光的方式做到這一點(它不需要將整個文件加載到存儲器例如像的file_get_contents)。

+0

完美的作品,謝謝! – 2011-04-12 06:28:58

1
file_put_contents('updated.xml', 
        file_get_contents('http://someulr.com/updated.xml') 
       ); 

simplexml_load_file('updated.xml'); 
+0

完美的作品,謝謝! – 2011-04-12 06:29:26

0

試試這個代碼,它可以幫助你

<?php 

function getXML() 
{ 

    // initialize the XML Parser 
    $xml_parser = xml_parser_create(); 
    // Set the functions to handle opening and closing tags 
    xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler"); 

    // Set the function to handle blocks of character data 
    xml_set_character_data_handler($xml_parser, "characterDataHandler"); 


    // Open the XML file for reading 
    $fp = @fopen("http://www.abc.com/mytest.xml","r"); 
    if(!$fp) 
    { 
     return "XML-Server down";    
    } 


    // Read the XML file 4KB at a time 
    while ($data = fread($fp, 4096)) 
     // Parse each 4KB chunk with the XML parser created above 
     if(xml_parse($xml_parser, $data, feof($fp))==0) 
     { 
      // Handle errors in parsing 
      return "\"XML-Server down\""; 
     } 

    // Close the XML file 
    fclose($fp); 

    // Free up memory used by the XML parser 
    xml_parser_free($xml_parser); 
} 

function startElementHandler($parser, $tagName, $attrs) 
{ 

} 


function endElementHandler($parser, $tagName) 
{ 

} 


function characterDataHandler($parser, $data) 
{ 

} 

?> 
+0

它沒有回答我目前的問題,但將來會記住更復雜的XML解析。謝謝! – 2011-04-12 06:31:09