технологии

PHP XML pretty printer (beautifier)

// Assume what you have < ?xml version="1.0"? > header in first string
function beautyXML($xml) {
  $xml = str_replace("><", ">\n<", $xml);
  $xml = explode("\n", $xml);
  $level = 0; $sp="";
  for ($i = 1; $i < count($xml)-1; $i++) {
    $xml[$i] = $sp.$xml[$i];
    $i1 = strpos($xml[$i],"<"."/")!==false ||
      strpos($xml[$i],"/>")!==false;
    $i2 = strpos($xml[$i+1],"/>")!==false;
    $i3 = strpos($xml[$i+1],"<"."/")!==false;
    if ($i1 && !$i2 && $i3) $level--;
    if (!$i1 && !$i3) $level++;
    $sp="";
    for ($j=0;$j<$level;$j++) $sp.="  ";
   }
   $xml = implode("\n", $xml);
   return $xml;
}

JS output

Программа, которая печатает свой собственный текст:

function out() {document.write(out+"; out()")}; out()

Результат:


На Jav'е посложнее будет ;)