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>';
?>

28 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.

Đào Quân said...

dich vu lam bao cao tai chinh tai my dinh
dich vu lam bao cao tai chinh tai hai ba trung
dich vu lam bao cao tai chinh tai ba dinh
dich vu lam bao cao tai chinh tai thanh tri
dich vu lam bao cao tai chinh tai hoang mai
dich vu lam bao cao tai chinh tai tay ho
dich vu lam bao cao tai chinh tai dong da
==========
dich vu ke toan thue tai dong da
dich vu ke toan thue tai tay ho
dich vu ke toan thue tai bac ninh
dich vu ke toan thue tai hai ba trung
dich vu ke toan thue tai tu liem
dich vu ke toan thue tai hoang mai
dich vu ke toan thue tai ba dinh
dich vu ke toan thue tai thanh tri
dich vu ke toan thue tai thai binh
cong ty lam dich vu ke toan tai vinh phuc
cong ty dich lam vu ke toan tai hung yen
cong ty dich lam vu ke toan tai phu tho
cong ty lam dich vu ke toan tai hai duong
cong ty lam dich vu ke toan tai hai phong
cong ty lam dich vu ke toan tai bac ninh
dich vu ke toan tai vinh phuc
dich vu ke toan tai hung yen
dich vu ke toan tai hai duong

Đào Quân said...

dich vu ke toan tai tay ho
dich vu ke toan tai ba đinh
dich vu ke toan tai hoang mai
dich vu ke toan tai thanh tri
dich vu ke toan tai dong da
dich vu ke toan tai tu liem
dich vu ke toan tai ha dong
dich vu ke toan tai long bien
dich vu ke toan tai thanh xuan
dich vu ke toan tai hai phong
dich vu ke toan tai bac ninh
dich vu ke toan tai hai ba trung
dich vu ke toan tai dong anh
dich vu ke toan tai gia lam
dich vu ke toan tai ung hoa
dich vu ke toan tai quoc oai
dich vu ke toan tai son tay
dich vu ke toan tai thanh oai
hoc ke toan tong hop
dich vu ke toan thue tron goi
dich vu bao cao tai chinh
dia chi hoc ke toan tong hop
khoa hoc ke toan tong hop
hoc chung chi ke toan
dich vu ke toan thue tai tphcm
lớp học kế toán tổng hợp
lớp học kế toán thực hành

Đào Quân said...

dia chi hoc ke toan tai cau giay
dia chi hoc ke toan tai ha dong
dia chi hoc ke toan tai bac ninh
trung tam dao tao ke toan tai ha dong
trung tam dao tao ke toan tai cầu giấy
trung tam dao tao ke toan tai thanh xuan
trung tam dao tao ke toan tai tphcm
khóa học kế toán tổng hợp tại hải phòng
khóa học kế toán tổng hợp tại tại bắc ninh
khóa học kế toán tổng hợp tại tphcm
khóa học kế toán tổng hợp tại hà nội
trung tam dao tao ke toan tai quan 3
trung tam dao tao ke toan tai binh duong
trung tam dao tao ke toan tai bac ninh
trung tam dao tao ke toan tai hai phong

Đào Quân said...

dich vu ke toan thue tai quan 12
dich vu ke toan thue tai quan 11
dich vu ke toan thue tai quan 10
dich vu ke toan thue tai quan 9
dich vu ke toan thue tai quan 8
dich vu ke toan thue tai quan 7
dich vu ke toan thue tai quan 6
dich vu ke toan thue tai quan 5
dich vu ke toan thue tai quan 4
dich vu ke toan thue tai quan 3
dich vu ke toan thue tai quan 2
dich vu ke toan thue tai quan 1
dich vu ke toan thue tai quan tan phu
dich vu ke toan thue tai quan binh tan
dich vu ke toan thue tai quan phu nhuan
dich vu ke toan thue tai quan tan binh
dich vu ke toan thue tai quan go vap
dich vu ke toan thue tai quan thu duc
dich vu ke toan thue tai quan binh thanh
dich vu ke toan thue tai huyen can gio
dich vu ke toan thue tai huyen nha be
dich vu ke toan thue tai huyen binh chanh
dich vu ke toan thue tai huyen hoc mon
dich vu ke toan thue tai huyen cu chi
dich vu ke toan thue tai huyen can gio