2016-05-04 9 views
0

i mit Blick auf die wenige Frage, ich weiß nicht, wie esWie Medien geneate: Inhalt xml mit PHP

lösen i folgenden RSS-Feed mit PHP und MySQL schreiben will:

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"> 
<channel> 
<item> 
<title>Here is the title</title> 
<link>http://example.com</link> 
<media:content medium="image" url="http://example.com/image.jpg"></media:content> 
<media:content medium="video" url="http://example.com/video.mp4"></media:content> 
</item> 
</channel> 
</rss> 

hier mein Code in php:

$db = new Db(); 

    $result = $db->select("select * from column"); 

    $xml = new SimpleXMLElement('<channel/>'); 


    for ($i = 0; $i < count($result); $i++) { 

     $title = $result[$i]title 
     $link = $result[$i]['link']; 
     $image = $result[$i]['image']; 
    $video = $result[$i]['video']; 

     $item = $xml->addChild('item'); 

     $item->title = $title 
     $item->link = $link 
     $item->image = ?? ; 
     $item->video = ?? ;  

    } 
    Header('Content-type: text/xml'); 
    print($xml->asXML()); 

weiß einfach nicht, wie Bild und Video einstellen, weil es Tags unterschiedlich wie Medien sind: Inhalt und uRL der beiden Bild- und Video-Tags. Bitte lassen Sie mich wissen

danke

+0

Namespacepräfix, wie 'media' in Ihrem XML, müssen irgendwo deklariert werden (etwas in dieser Zeile:' xmlns: media = "foo" '). Wie angekündigt, ist das XML nicht wohlgeformt. Nun, auf welchem ​​Element soll die ns-Präfix-Deklaration stehen? – har07

Antwort

2

Sie können das nicht tun. Ihr XML ist nicht gültig. Vorangestellte-Tags müssen einen deklarierten NamespaceURI, in Ihrem Fall 'http://search.yahoo.com/mrss/':

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"> 
(...) 
</rss> 

Sie ->addChild verwenden können Namespace-Elemente zu erstellen:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"> 
<channel/> 
</rss>'); 

(...) 

$item = $xml->channel->addChild('item'); 

$item->title = $title; 
$item->link = $link; 

/* Add <media:image>: */ 
$node = $item->addChild('image', Null, 'http://search.yahoo.com/mrss/'); 
$node->addAttribute('url', $image); 

/* Add <media:video>: */ 
$node = $item->addChild('video', Null, 'http://search.yahoo.com/mrss/'); 
$node->addAttribute('url', $video); 

Ergebnis:

<?xml version="1.0" encoding="utf-8"?> 
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0"> 
    <channel> 
     <item> 
      <title>Your Title</title> 
      <link>http://www.somelink.it/</link> 
      <media:image url="http://www.image.com/"/> 
      <media:video url="http://www.video.com/"/> 
     </item> 
    </channel> 
</rss> 
+0

Sie sind Genie dank so viel, bitte lassen Sie mich wissen, letzte Sache mein xml Bild Medium in Media Content-Tag bitte können Sie nur dies löschen: '' XML-Site, die mir gegeben ist, ist [link] (http://news.yahoo.com/rss/) –

+1

Ich verstehe nicht. Bitte klären Sie – fusion3k

+0

, weil, wie Sie sagten, Media-Tag, die ein wenig anders in side Muss-Anforderung ist Öffnen und Schließen von Tag Medieninhalt wie das Beispiel '' –