Nasıl php ile (POST döndü) harici bir XML dosyası ayrıştırmak?

4 Cevap php

Ben bir XML dosyası ayrıştırmak ve görüntülemek için (internet etrafında bulunan bazı öğreticiler dayalı) yazılmış basit bir kodu var. Ancak, ben sadece benim sunucuda depolanan bir XML dosyası başvuru nasıl biliyorum ve POST bana iade ediliyor bir XML dosyası kullanmak mümkün olmak istiyorum.

Şu anda benim kod şöyle görünür:

if( ! $xml = simplexml_load_file('test.xml') )
{
    echo 'unable to load XML file';
}
else
{
    foreach( $xml as $event)
    {
        echo 'Title: ';
        echo "<a href=\"$event->url\">$event->title</a><br />";
        echo 'Description: '.$event->info.'<br />';
        echo '<br />';
    }
} 

Bana XML dosyasını döndürür POST URL'ye işaret sağlayacak biriyle simplexml_load_file işlevini yerine bazı yolu var mı?

4 Cevap

Yerine LoadFile of simplexml_load_string kullanın:

 simplexml_load_string($_POST['a']);

Eğer POST dosyası url alırsanız Propably url ile simplexml_load_file işlevini kullanabilirsiniz, ama bu işe yaramazsa size simplexml_load_string ile birlikte file_get_contents kullanabilirsiniz:

//say $_POST['a'] == 'http://example.com/test.xml';
simplexml_load_file($_POST['a']); // <-- propably works
simplexml_load_string(file_get_contents($_POST['a'])); //<-- defenitly works (propaly what happens internally)

Ayrıca harici dosyaların içeriğini almak güvenli modda PHP çalıştırarak tarafından yasaklanmış olabilir.

Eğer kullanıcı tarafından yüklenmiş olan bir dosyayı alıyorsanız, size (the file) $_FILES superglobal variable -- and you can read more about files uploads here {[(3)] içeriğine bakarak bulabilirsiniz } if you don't want the file to be deleted at the end of the request).

Daha sonra, bu dosya ile zaten-yüklemedi dosyaları ile aynı şekilde çalışabilirsiniz.


If you are receiving an XML string, you can use simplexml_load_string on it.


And if you are only receiving the URL to a remote XML content, you have to :

  • Sunucunuza dosya indirmek
  • ve, daha sonra, içeriğini ayrıştırmak.

Bu sunucu düzgün yapılandırılmış olup olmadığını (yani allow_url_fopen etkinse), bir parametre olarak URL geçirerek, simplexml_load_file kullanılarak yapılabilir.

Bir dize olarak XML verilerini almak için, curl_exec for a very basic example, and curl_setopt for the options you can use (you'll especially want to use CURLOPT_RETURNTRANSFER - bkz Else, indir curl kullanılarak yapılması gerekecektir size geçebilir simplexml_load_string).

Dan http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=php4:

If you do not want to save the uploaded file directly but to process it, the PHP functions file_get_contents() and fread() can help you. The file_get_contents() function returns a string that contains all data of the uploaded file:

if (is_uploaded_file($_FILES['myFile']['tmp_name']))
  $fileData = file_get_contents($_FILES['myFile']['tmp_name']);

Bu size o dosyanın içindeki ham metin üzerinde bir kolu verecektir. Oradan XML ayrıştırmak gerekir. Umarım ki olur!

Çıkış simplexml_load_string. Daha sonra cURL yazı yapmak ve sonuç almak için kullanabilirsiniz. Örnek:

<?php
$xml = simplexml_load_string($string_fetched_with_curl);
?>