diff --git a/lib/api.php b/lib/api.php
index 454a6fd26d3ddcd249cecf600adde70bd768b6d5..6ee570d60e79ba506e7d32a78b2cc8fa72557c0c 100644
--- a/lib/api.php
+++ b/lib/api.php
@@ -115,13 +115,32 @@ class OC_API {
 	*/
 	private static function respond($response, $format='json'){
 		if ($format == 'json') {
-			echo json_encode($response);
-		//} else if ($format == 'xml') {
-			// TODO array to xml
+			OC_JSON::encodedPrint($response);
+		} else if ($format == 'xml') {
+			header('Content-type: text/xml; charset=UTF-8');
+			$writer = new XMLWriter();
+			$writer->openMemory();
+			$writer->setIndent( true );
+			$writer->startDocument();
+			self::toXML($response, $writer);
+			$writer->endDocument();
+			echo $writer->outputMemory(true);
 		} else {
 			var_dump($format, $response);
 		}
 	}
+
+	private static function toXML($array, $writer){
+		foreach($array as $k => $v) {
+			if (is_array($v)) {
+				$writer->startElement($k);
+				self::toXML($v, $writer);
+				$writer->endElement();
+			} else {
+				$writer->writeElement($k, $v);
+			}
+		}
+	}
 	
 	/**
 	 * check if the user is authenticated