openURI('php://STDOUT'); $out->startDocument('1.0', 'UTF-8'); $out->startElement('metalink'); $out->writeAttribute('version', '3.0'); $out->writeAttribute('generator', 'My own script, powered by PHP '.PHP_VERSION); $out->writeAttribute('xmlns', 'http://www.metalinker.org/'); $out->startElement('files'); $out->startElement('file'); $out->writeAttribute('name', 'eclipse-java-europa-fall-win32.zip'); $out->writeElement('size', '82764995'); $out->writeElement('os', 'Windows-x86'); $in->open('http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/20070927/eclipse-java-europa-fall-win32.zip&format=xml&protocol=http'); function parseMirrorList(XMLReader $in, XMLWriter $out) { $out->startElement('resources'); while ($in->read()) { if ($in->nodeType == XMLReader::END_ELEMENT && $in->name == 'mirrors') { break; } if ($in->nodeType != XMLReader::ELEMENT || $in->name != 'mirror') { continue; } $out->startElement('url'); $url = $in->getAttribute('url'); $out->writeAttribute('type', parse_url($url, PHP_URL_SCHEME)); $out->text($url); $out->endElement(); } $out->endElement(); } while ($in->read()) { if ($in->nodeType != XMLReader::ELEMENT) { continue; } if ($in->name == 'mirrors') { parseMirrorList($in, $out); } } $out->endElement(); // $out->endElement(); // $out->endElement(); // $out->endDocument(); ?>