How to echo xml file in php

前端 未结 10 813
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-29 04:37

How to print an xml file to the screen in php?

This is not working:

$curl = curl_init();        
curl_setopt ($curl, CURLOPT_URL, \'http://rss.news.y         


        
相关标签:
10条回答
  • 2020-11-29 04:53

    You can use HTTP URLs as if they were local files, thanks to PHP's wrappers

    You can get the contents from an URL via file_get_contents() and then echo it, or even read it directly using readfile()

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

    or

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

    Don't forget to set the correct MIME type before outputing anything, though.

    header('Content-type: text/xml');
    
    0 讨论(0)
  • 2020-11-29 04:55

    This works:

    <?php
    $XML = "<?xml version='1.0' encoding='UTF-8'?>
    <!-- Your XML -->
    ";
    
    header('Content-Type: application/xml; charset=utf-8');
    echo ($XML);
    ?>
    
    0 讨论(0)
  • 2020-11-29 05:00

    The best solution is to add to your apache .htaccess file the following line after RewriteEngine On

    RewriteRule ^sitemap\.xml$ sitemap.php [L]
    

    and then simply having a file sitemap.php in your root folder that would be normally accessible via http://www.yoursite.com/sitemap.xml, the default URL where all search engines will firstly search.

    The file sitemap.php shall start with

    <?php
    //Saturday, 11 January 2020 @kevin
    
    header('Content-type: text/xml');
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    ?>
    <urlset
          xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
                http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
    
    <url>
      <loc>https://www.yoursite.com/</loc>
      <lastmod>2020-01-08T13:06:14+00:00</lastmod>
      <priority>1.00</priority>
    </url>
    
    
    </urlset>
    

    it works :)

    0 讨论(0)
  • 2020-11-29 05:01

    Am I oversimplifying this?

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

    Some places (like digg.com) won't allow you to access their site without having a user-agent, in which case you would need to set that with ini_set() prior to running the file_get_contents().

    0 讨论(0)
  • 2020-11-29 05:02

    Here's what worked for me:

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

    Using htmlspecialchars will prevent tags from being displayed as html and won't break anything. Note that I'm using Prettyprint to highlight the code ;)

    0 讨论(0)
  • 2020-11-29 05:02

    If you just want to print the raw XML you don't need Simple XML. I added some error handling and a simple example of how you might want to use SimpleXML.

    <?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;   
    }
    
    0 讨论(0)
提交回复
热议问题