<?php
function compact_($xmlsr,$indent){
if($xmlsr->nodeType==XMLReader::ELEMENT){
print $xmlsr->name."[";
$indent.=str_repeat(' ',strlen($xmlsr->name)+1);
$first=true;
if($xmlsr->hasAttributes){
while($xmlsr->moveToNextAttribute()){
if(!$first)print "\n$indent";
print "@".$xmlsr->name."[".$xmlsr->value."]";
$first=false;
}
} // Warning: PHP does not return an END_ELEMENT on a empty tag
if(!$xmlsr->isEmptyElement)
while(true){
do {$xmlsr->read();}
while ($xmlsr->nodeType==XMLReader::SIGNIFICANT_WHITESPACE);
if($xmlsr->nodeType==XMLReader::END_ELEMENT)break;
if($first)$first=false;
else print "\n$indent";
compact_($xmlsr,$indent);
}
print "]";
} else if ($xmlsr->nodeType==XMLReader::TEXT)
print preg_replace("/ *\n? +/"," ",trim($xmlsr->value));
else {
die("STRANGE NODE:".$xmlsr->nodeType."\n");
}
}
$xmlsr = new XMLReader();
$xmlsr->open("php://stdin");
$xmlsr->setParserProperty(XMLReader::SUBST_ENTITIES,true);
while ($xmlsr->nodeType!=XMLReader::ELEMENT)$xmlsr->read();
compact_($xmlsr,"");
print "\n";
?>