PHP kullanarak dinamik XML dosyası oluşturmak nasıl?

5 Cevap php

Ben zamanında dinamik olarak bir xml dosyası oluşturmak zorundayız. PHP kullanarak dinamik altında XML dosyasını üreten bana yardımcı olun.

<?xml version="1.0" encoding="UTF-8"?>
<xml>
 <track>
     <path>song1.mp3</path>
     <title>Track 1 - Track Title</title>
 </track>
 <track>
     <path>song2.mp3</path>
     <title>Track 2 - Track Title</title>
 </track>
 <track>
     <path>song3.mp3</path>
     <title>Track 3 - Track Title</title>
 </track>
 <track>
     <path>song4.mp3</path>
     <title>Track 4 - Track Title</title>
 </track>
 <track>
     <path>song5.mp3</path>
     <title>Track 5 - Track Title</title>
 </track>
 <track>
     <path>song6.mp3</path>
     <title>Track 6 - Track Title</title>
 </track>
 <track>
     <path>song7.mp3</path>
     <title>Track 7 - Track Title</title>
 </track>
 <track>
     <path>song8.mp3</path>
     <title>Track 8 - Track Title</title>
 </track>

5 Cevap

Ben kullanmak istiyorum SimpleXMLElement.

<?php

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

for ($i = 1; $i <= 8; ++$i) {
    $track = $xml->addChild('track');
    $track->addChild('path', "song$i.mp3");
    $track->addChild('title', "Track $i - Track Title");
}

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

Bu soru senin kapsam şey, halletmek yok öğrenmek için olması gerektiği gibi size çiftleşmiş sistemleri ve yardımcı sınıflar gibi kısayollar kaçınmak gerektiğini düşünüyorum bir ödev olduğu.

, Sen örnek bir DOMDocument sınıf gerektiği PHP bir XmlDocument oluşturmak alt düğümleri oluşturmak ve belge ağacının doğru dalında bu düğümleri eklemek için.

Başvuru için okuyabilir http://it.php.net/manual/en/book.dom.php

Şimdi aşağıdaki kodu hızlı bir tur alacaktır.

  • at line 2 we create an empty xml document (just specify xml version (1.0) and encoding (utf8))
  • now we need to populate the xml tree:
    • Biz (5 hat) bir xmlnode oluşturmak zorunda
    • ve doğru konumda bu eklemek gerekir. Biz DOMDocument doğrudan bu append yüzden kök yaratıyor.
    • Biz kök düğümü (bu arada xml denir) için parça düğümleri eklemek için bu referans kaydetmek, eleman düğüm elemanı ekler ve eklenen düğümü geri oluşturmak unutmayın.

Bunlar size dom API ile diğer bir çok şey yapabilirsiniz (örneğin, 13) sadece bir çizgi bir düğüm oluşturabilir ve ekleyebilirsiniz, temelidir. Bu size kalmış.

<?php    
    /* create a dom document with encoding utf8 */
    $domtree = new DOMDocument('1.0', 'UTF-8');

    /* create the root element of the xml tree */
    $xmlRoot = $domtree->createElement("xml");
    /* append it to the document created */
    $xmlRoot = $domtree->appendChild($xmlRoot);

    $currentTrack = $domtree->createElement("track");
    $currentTrack = $xmlRoot->appendChild($currentTrack);

    /* you should enclose the following two lines in a cicle */
    $currentTrack->appendChild($domtree->createElement('path','song1.mp3'));
    $currentTrack->appendChild($domtree->createElement('title','title of song1.mp3'));

    $currentTrack->appendChild($domtree->createElement('path','song2.mp3'));
    $currentTrack->appendChild($domtree->createElement('title','title of song2.mp3'));

    /* get the xml printed */
    echo $domtree->saveXML();
?>

Edit: Just one other hint: The main advantage of using an xmldocument (the dom document one or the simplexml one) instead of printing the xml,is that the xmltree is searchable with xpath query

Bunu yapmak için kolay bir yoldur:

<?php
// Send the headers
header('Content-type: text/xml');
header('Pragma: public');
header('Cache-control: private');
header('Expires: -1');
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

echo '<xml>';

// echo some dynamically generated content here
/*
<track>
    <path>song_path</path>
    <title>track_number - track_title</title>
</track>
*/

echo '</xml>';

?>

. php olarak kaydedin

$query=mysql_query("select * from tablename")or die(mysql_error()); 
$xml="<libraray>\n\t\t";
while($data=mysql_fetch_array($query))
{

    $xml .="<mail_address>\n\t\t";
    $xml .= "<id>".$data['id']."</id>\n\t\t";
    $xml .= "<email>".$data['email_address']."</email>\n\t\t";
    $xml .= "<verify_code>".$data['verify']."</verify_code>\n\t\t";
    $xml .= "<status>".$data['status']."</status>\n\t\t";
    $xml.="</mail_address>\n\t";
}
$xml.="</libraray>\n\r";
$xmlobj=new SimpleXMLElement($xml);
$xmlobj->asXML("text.xml");

Sadece veritabanı ile bağlanmak Onun basit bu proje klasörüne test.xml dosyası yaratacak

Tiny But Strong çiftleşmiş sistemi bir göz atın. Genellikle çiftleşmiş HTML için kullanılan ancak XML dosyaları ile çalışır bir uzantısı var oluyor. Htm ve xml - - ve kullanıcı daha sonra ekrana veya elektronik bir rapor göndermek için seçebilirsiniz ben bir kod dosyası ve iki şablon dosyalarını olabilir raporlar oluşturmak için yoğun kullanabilirsiniz.

Bir başka avantajı, sıfırdan xml kod yok bazı durumlarda çok büyük karmaşık tablolar ihracat isteyen oldum, ve bunun yerine gerekli olduğunu tüm varolan elektronik tabloyu kaydetmek için tüm ihracat kodlamak zorunda değildir veri çıkışı gerekli kod etiketleri xml ve yedek. Bu çalışmak için hızlı ve çok etkili bir yoldur.