Php xml dosyasını yankı nasıl

5 Cevap php

Php ekrana bir xml dosyayı yazdırmak için?

Bu çalışma değil:

$curl = curl_init();        
curl_setopt ($curl, CURLOPT_URL, 'http://rss.news.yahoo.com/rss/topstories');   
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   
$result = curl_exec ($curl);   
curl_close ($curl);    
$xml = simplexml_load_string($result);
echo $xml;

Basit bir çözüm var mı? Belki SimpleXML olmadan?

5 Cevap

Yerel dosyaları sanki, PHP's wrappers sayesinde HTTP URL'leri kullanabilirim

Sen file_get_contents üzerinden bir URL'den içeriğini olsun () ve ardından echo, hatta readfile kullanarak doğrudan okumak () olabilir

$file = file_get_contents('http://example.com/rss');
echo $file;

veya

readfile('http://example.com/rss');

Don't fveyaget to set the cveyarect MIME type befveyae outputing anything, though.

header('Content-type: text/xml');

İşte benim için çalıştı ne:

<pre class="prettyprint linenums">
    <code class="language-xml"><?php echo htmlspecialchars(file_get_contents("example.xml"), ENT_QUOTES); ?></code>
</pre>

htmlspecialchars html olarak görüntülenen etiketleri engeller ve bir şey kırmayacak kullanma. I Prettyprint kodunu vurgulamak için kullanıyorum unutmayın ;)

Sen asXML yöntemini kullanabilirsiniz

echo $xml->asXML();

Ayrıca bunu bir dosya adı verebilir

$xml->asXML('filename.xml');

Sadece ham XML yazdırmak istiyorsanız Basit XML gerekmez. Ben bazı hata işleme ve SimpleXML kullanmak isteyebilirsiniz nasıl basit bir örnek eklendi.

<?php 
$curl = curl_init();        
curl_setopt ($curl, CURLOPT_URL, 'http://rss.news.yahoo.com/rss/topstories');   
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   
$result = curl_exec ($curl);   

if ($result === false) {
    die('Error fetching data: ' . curl_error($curl));   
}
curl_close ($curl);    

//we can at this point echo the XML if you want
//echo $result;

//parse xml string into SimpleXML objects
$xml = simplexml_load_string($result);

if ($xml === false) {
    die('Error parsing XML');   
}

//now we can loop through the xml structure
foreach ($xml->channel->item as $item) {
    print $item->title;   
}

Ben bu basitleştirerek muyum?

$location = "http://rss.news.yahoo.com/rss/topstories";
print file_get_contents($location);

(Digg.com gibi) Bazı yerlerde önce file_get_contents çalıştıran ini_set () () ile bu ayarlamak gerekir bu durumda, bir kullanıcı aracısı olmadan kendi sitesine erişmek için izin vermeyecektir.