XML PHP Pretty Printer


<?
/** Prettifies an XML string into a human-readable and indented work of art
 *  @param string $xml The XML as a string
 *  @param boolean $html_output True if the output should be escaped (for use in HTML)
 */
function xmlpp($xml, $html_output=false) {
    $xml_obj = new SimpleXMLElement($xml);
    $level = 4;
    $indent = 0; // current indentation level
    $pretty = array();
    
    // get an array containing each XML element
    $xml = explode("\n", preg_replace('/>\s*</', ">\n<", $xml_obj->asXML()));

    // shift off opening XML tag if present
    if (count($xml) && preg_match('/^<\?\s*xml/', $xml[0])) {
      $pretty[] = array_shift($xml);
    }

    foreach ($xml as $el) {
      if (preg_match('/^<([\w])+[^>\/]*>$/U', $el)) {
          // opening tag, increase indent
          $pretty[] = str_repeat(' ', $indent) . $el;
          $indent += $level;
      } else {
        if (preg_match('/^<\/.+>$/', $el)) {            
          $indent -= $level;  // closing tag, decrease indent
        }
        if ($indent < 0) {
          $indent += $level;
        }
        $pretty[] = str_repeat(' ', $indent) . $el;
      }
    }   
    $xml = implode("\n", $pretty);   
    return ($html_output) ? htmlentities($xml) : $xml;
}

echo '<pre>' . xmlpp($xml, true) . '</pre>';
?>

24 comments:

Chris Buenafe said...

nice code you have.

axah said...

Hey Eric,

great work. Runs out of the box :-)

Thanks

Tim Chambers said...

Excellent code - worked fine for me.

You saved me lots of time - a valuable commodity.

Regards,

Tim

Eric (Google) said...

Thanks! Glad this helped.

Eric

vaibhav said...

Hey Eric, short and sweet code.
Thanks :)

zeropadded said...

Excellent, thanks a lot!

Kawika said...

This function helped me out a lot. Thanks!

thInk said...

can anyone please tell me how do i use this function?

D-FENSE said...

brilliant... nice and easy!

Tomás García said...

Thx for the code!
Funciona perfectamente!

Patty Hayes said...

Would you be willing to put a license on this code? public-domain? GPL? bsd? I'd like to use it, but legally can't until you do!

Eric (Google) said...

At the bottom:

All code licensed under the Apache 2.0 License.

Frank de Weger said...

I might be missing something really obvious, but i think if you leave out the declaration of the SimpleXMLEelement and use

$xml = explode("\n", preg_replace('/>\s*\n<", $xml));

instead, you get the same reults...

kosovohp said...

socks5 | socks proxy | proxy free | proxy
socks proxy | socks5 | proxy | proxy free

kosovohp said...

Girl Xinh | Hot Girl | Cute Girl | Sexy Girl | Hot Girl Asian
Hot Girl | Lexi Belle | Sexy Girl | Cute Girl | Hot Asian Girl | Leah Dizon | Hot Girl Asian | Girl Xinh
socks proxy | socks5 | proxy free |proxy list

thanh tung said...

healthtips
healthtips
healthtips
healthtips
healthtips




socks proxy
socks proxy
socks proxy
socks proxy
socks proxy
socks proxy
socks proxy
socks proxy
socks proxy
socks proxy
check socks proxy
socks proxy
socks proxy






funnystory
funnystory
funnystory
funnystory
funnystory




funny pictures
funny pictures
funny pictures
funny pictures
funny pictures
funny pictures






Girl Xinh
Girl Xinh
Girl Xinh
Girl Xinh
Girl Xinh
Girl Xinh
Girl Xinh





cute animal
food news
internet
football news
bank news
marketing
science news
travel vietnamt
real estate vietnam
business news
music news
health news
software
seo news

thanh tung said...

Girl Xinh | Hot Girl | Cute Girl | Sexy Girl |Hot Girl Asian | Hot Girl Xinh
Funny Story | Funny Stories | Funny | lol
Funny Pictures | funny | lol
Girl Xinh | Hot Girl | Cute GirlSexy Girl |Hot Girl Asian | Hot Girl Xinh | lexi belle | ngoc trinh

LayZee said...

In PHP versions prior to 5.3 make sure to set encoding and other options for htmlentities.

epictoon said...

thanks for this great tip... :)
delicious


Sara said...

All the meta tags that are displayed here are wrong, i always look at those kind of thing before adding on my site maybe i can check it out for you if you get a whatsapp download

raditiya13 said...

Jika anda merasa bingung dimana mencari referensi harga mesin terbaru dan terupdate maka anda dapat langsung mengunjungi situs kami, langsung saja Lihat Artikel yang mana telah ada informasi super lengkap mengenai harga mesin terkini baik itu mesin jahit dan juga mesin fotocopy. Anda seorang pengangguran? Jika iya maka anda perlu memulai usaha sendiri daa menjadi seorang wirausaha yang sukses, jika anda bingung memulainya silahkan baca artikel ini yang mana kami telah membagikan referensi peluang usaha baik sampingan, modal kecil ataupun tanpa modal.

raditiya13 said...

Saat ini mencari informasi resep masakan dapat di lakukan dengan berselancar di internet, jika anda bingung mencarinya langsung saja kunjungi situs resep kami dengan cara baca artikel atau klik saja url yang kami sediakan berikut ini Resep Cara Membuat Martabak Manis Mini Super Lezat yang mana tersedia banyak informasi masakan seperti membuat martabak manis. Selain itu, anda juga bisa membaca kumpulan artikel resep seperti Resep Cara Membuat Tahu Crispy Yang Kress dan Kriuk Renyah yang mana anda dapat membuat sajian makanan enak dengan bahan baku yang murah, atau membaca ulasan Resep Cara Membuat Sayur Asem Jawa Yang Enak yang menyehatkan dan bergizi tinggi, atau membaca ulasan Resep Cara Membuat Sambal Terasi Yang Enak dan Lezat yang lezat pedas dan cocok sebagai pendamping lauk sehari-hari atau membaca ulasan Resep Cara Membuat Sayur Sop Sederhana Yang Enak yang mudah membuatnya, menyehatkan dan murah meriah, atau membaca ulasan Resep Cara Membuat Bakwan Tahu Yang Mudah dan Enak yang mana tahu dapat di kreasikan menjadi bakwan super enak, atau membaca ulasan Resep Cara Membuat Tumis Tempe Yang Enak dan Lezat yang simple dan mudah membuatnya atau membaca ulasan Resep Cara Membuat Ayam Rica-Rica Pedas Enak yang enak, pedas dan khas dari manado atau membaca ulasan Resep Cara Membuat Rawon Yang Enak Beserta Bumbunya yang lezat dan khas dengan bumbu spesial kluwak dan yang terakhir anda dapat membaca ulasan Resep Cara Membuat Soto Betawi Yang Enak Khas Jakarta yang mana soto betawi ini merupakan makanan khas suku betawi daerah ibu kota jakarta yang dapat anda buat dengan mudah sekali.

raditiya13 said...

Anda seorang yang tidak bisa memasak dan sekarang ingin belajar memasak, jika iya maka alangkah baiknya jika anda membaca kumpulan resep terlengkap dengan cara baca artikel atau anda dapat membaca salah satu resep spesial dari kami yakni Resep Martabak Manis Mini, Makanan Kecil Super Lezat yang lezat dengan bentuk mini dan sangat mudah membuatnya. Selain itu anda juga dapat membaca kumpulan resep seperti Resep Tahu Crispy Yang Kriuk Kress Super Renyah yang lezat dengan bunyi kress setiap gigitannya, atau anda dapat membaca Resep Sayur Asem Jawa Yang Enak dan Mudah Membuatnya yang mudah membuatnya dengan bahan sayur yang mudah di cari di desa, atau anda dapat membaca Resep Sambal Terasi Pedas Yang Enak dan Spesial yang di buat sederhana dan pedas sangat cocok untuk teman makan, atau anda dapat membaca Resep Membuat Sayur Sop Sederhana Spesial Super Lezat yang mudah membuatnya dan menyehatkan atau anda dapat membaca Resep Bakwan Tahu Sederhana Yang Enak dan Mudah Membuatnya yang mana merubah tahu menjadi bakwan lezat,\ atau anda dapat membaca Resep Tumis Tempe Sederhana Enak, Lezat dan Menyehatkan yang mana tempe menjadi lebih lezat, atau anda dapat membaca Resep Ayam Rica-Rica Pedas, Bumbu Serta Cara Membuatnya yang mana ini merupakan makanan khas Manado yang pedas dan lezat atau anda dapat membaca Resep Rawon Enak Beserta Bumbu dan Cara Membuatnya yang enak dengan bumbu spesial dan resep terakhir dari kami yakni Resep Membuat Soto Betawi Khas Jakarta Yang Enak yang enak, lezat serta mudah membuatnya, sangat cocok sebagai sajian menyehatkan sekeluarga.

Cyntia Clara said...

Untuk anda yang suka dengan komputer dan berbagai hal lain seputar tekhnologi, informasi di RachmadShare.blogspot.com bisa sangat membantu anda karena ada banyak tips disana. Namun bagi yang hanya suka smartphone blog InfoSmartphoneKu.com juga harus anda kunjungi. Berbagai peluang usaha ada disitus PeluangUsahaSampingan99.blogspot.com disana menjelaskan sedikit banyak seputar peluang usaha sampingan. Kemudian lihat inspirasi PeluangUsahaDunia.blogspot.com disitus kami. Untuk anda yang suka dengan komputer dan berbagai hal lain seputar tekhnologi, informasi di Situs Informasi Tekhnologi bisa sangat membantu anda karena ada banyak tips disana. Namun bagi yang hanya suka smartphone blog Spesifikasi dan Harga Smartphone Terbaru juga harus anda kunjungi. Berbagai peluang usaha ada disitus Peluang Usaha Sampingan disana menjelaskan sedikit banyak seputar peluang usaha sampingan. Kemudian lihat inspirasi Peluang Usaha Rumahan disitus kami. Untuk anda yang suka dengan komputer dan berbagai hal lain seputar tekhnologi, informasi di Info Komputer dan Gadget bisa sangat membantu anda karena ada banyak tips disana. Namun bagi yang hanya suka smartphone blog Info dan Tips Gadget, Android, Smartphone juga harus anda kunjungi. Berbagai peluang usaha ada disitus Peluang Usaha Rumahan dan Sampingan disana menjelaskan sedikit banyak seputar peluang usaha sampingan. Kemudian lihat inspirasi Peluang Usaha Sampingan Rumahan disitus kami.