<?php dl('xmlwriter.so'); $xw = xmlwriter_open_memory(); xmlwriter_set_indent($xw, 1); $res = xmlwriter_set_indent_string($xw, ' '); xmlwriter_start_document($xw, '1.0', 'UTF-8'); // A first element xmlwriter_start_element_ns($xw, 'prefix', 'books', 'uri'); xmlwriter_start_attribute($xw, 'isbn'); /* Uncomment this line if you have libxml 2.6.17 or CVS version after 2005/02/22 earlier versions segfault */ /* xmlwriter_start_attribute_ns($xw, 'prefix', 'isbn', 'uri'); xmlwriter_end_attribute($xw); */ xmlwriter_end_attribute($xw); xmlwriter_text($xw, 'book1'); xmlwriter_end_element($xw); xmlwriter_end_document($xw); $out = xmlwriter_output_memory($xw, 0); echo $out;
private function process_request($request) { global $API_DOMAIN, $API_DOMAIN_DOT_SUFFIX; $app_id = $this->app_id; $method = $request['method']; $callback = false; $serialized_result = ''; // Initialize result $result = array(); // Fix method name if (starts_with($method, $API_DOMAIN . '.')) { $method = substr($method, 9); } // Replace periods with underscores in method name $method_underscore = str_replace('.', '_', $method); $ec = $this->check_throttle($method_underscore, $request); if ($ec !== API_EC_SUCCESS) { $msg = $api_error_descriptions[$ec]; if ($ec === API_EC_BAD_IP) { $msg .= ' (ip was: ' . $_SERVER['REMOTE_ADDR'] . ')'; } throw new api10_FacebookApiException(array('error_code' => $ec, 'error_msg' => $msg)); } $impl = new FacebookApi10Implementation($app_id, $this->user_id, $this->session_key, $this->format); $api = new FacebookApi10Rest($impl); // Check that the method is valid if (!method_exists($api, $method_underscore) || !method_exists($impl, $method_underscore) || !api_can_call_method($app_id, $method_underscore)) { $ec = api10_FacebookApiErrorCode::API_EC_METHOD; throw new api10_FacebookApiException(array('error_code' => $ec, 'error_msg' => $GLOBALS['api_error_descriptions'][$ec])); } else { // Call the method and catch any exceptions $result = $api->{$method_underscore}($request); } switch ($this->format) { case 'manual': print api_xml_render_manual_error($ec, $msg, $request); break; case 'xml': // Prepare the XML response $xml_memory = xmlwriter_open_memory(); xmlwriter_set_indent($xml_memory, true); xmlwriter_set_indent_string($xml_memory, ' '); xmlwriter_start_document($xml_memory, API_VERSION_10, 'UTF-8'); if ($result instanceof Exception) { $name = 'error_response'; } else { $name = $method_underscore . '_response'; } $attrs = array(); // FBOPEN:NOTE here, if you are not publishing your own .xsd, to use 'facebook.com' instead // of $API_DOMAIN_DOT_SUFFIX $attrs['xmlns'] = 'http://api.' . $API_DOMAIN_DOT_SUFFIX . '/' . API_VERSION_10 . '/'; $attrs['xmlns:xsi'] = 'http://www.w3.org/2001/XMLSchema-instance'; if ($method_underscore != 'fql_query') { $attrs['xsi:schemaLocation'] = 'http://api.' . $API_DOMAIN_DOT_SUFFIX . '/' . API_VERSION_10 . '/ http://api.' . $API_DOMAIN_DOT_SUFFIX . '/' . API_VERSION_10 . '/facebook.xsd'; } if (is_array($result) && isset($result[0]) && $result[0] instanceof xml_element) { $attrs['list'] = 'true'; api_xml3_render_object($xml_memory, new xml_element($name, $result, $attrs)); } else { api_xml2_render_object($xml_memory, $name, $result, $attrs); } xmlwriter_end_document($xml_memory); // Write XML response $xml = xmlwriter_output_memory($xml_memory, true); if ($callback) { $xml = addslashes($xml); $xml = str_replace("\n", '\\n', $xml); $serialized_result = $callback . '(\'' . $xml . '\');'; } else { $serialized_result = $xml; } break; case 'json': $json = api_json2_render_object($result); if ($callback) { $serialized_result = $callback . '(' . $json . ');'; } else { $serialized_result = $json; } break; } return $serialized_result; }
/** * @brief Generate an RSS feed * @param string $link * @param string $content */ public static function generaterss($link, $content) { $writer = xmlwriter_open_memory(); xmlwriter_set_indent($writer, 4); xmlwriter_start_document($writer, '1.0', 'utf-8'); xmlwriter_start_element($writer, 'rss'); xmlwriter_write_attribute($writer, 'version', '2.0'); xmlwriter_write_attribute($writer, 'xmlns:atom', 'http://www.w3.org/2005/Atom'); xmlwriter_start_element($writer, 'channel'); xmlwriter_write_element($writer, 'title', 'my ownCloud'); xmlwriter_write_element($writer, 'language', 'en-us'); xmlwriter_write_element($writer, 'link', $link); xmlwriter_write_element($writer, 'description', 'A personal ownCloud activities'); xmlwriter_write_element($writer, 'pubDate', date('r')); xmlwriter_write_element($writer, 'lastBuildDate', date('r')); xmlwriter_start_element($writer, 'atom:link'); xmlwriter_write_attribute($writer, 'href', $link); xmlwriter_write_attribute($writer, 'rel', 'self'); xmlwriter_write_attribute($writer, 'type', 'application/rss+xml'); xmlwriter_end_element($writer); // items for ($i = 0; $i < count($content); $i++) { xmlwriter_start_element($writer, 'item'); if (isset($content[$i]['subject'])) { xmlwriter_write_element($writer, 'title', $content[$i]['subject']); } if (isset($content[$i]['link'])) { xmlwriter_write_element($writer, 'link', $content[$i]['link']); } if (isset($content[$i]['link'])) { xmlwriter_write_element($writer, 'guid', $content[$i]['link']); } if (isset($content[$i]['timestamp'])) { xmlwriter_write_element($writer, 'pubDate', date('r', $content[$i]['timestamp'])); } if (isset($content[$i]['message'])) { xmlwriter_start_element($writer, 'description'); xmlwriter_start_cdata($writer); xmlwriter_text($writer, $content[$i]['message']); xmlwriter_end_cdata($writer); xmlwriter_end_element($writer); } xmlwriter_end_element($writer); } xmlwriter_end_element($writer); xmlwriter_end_element($writer); xmlwriter_end_document($writer); $entry = xmlwriter_output_memory($writer); unset($writer); return $entry; }
/** * generates the xml or json response for the API call from an multidimenional data array. * @param string $format * @param string $status * @param string $statuscode * @param string $message * @param array $data * @param string $tag * @param string $tagattribute * @param int $dimension * @param int $itemscount * @param int $itemsperpage * @return string xml/json */ private static function generateXml($format, $status, $statuscode, $message, $data = array(), $tag = '', $tagattribute = '', $dimension = -1, $itemscount = '', $itemsperpage = '') { if ($format == 'json') { $json = array(); $json['status'] = $status; $json['statuscode'] = $statuscode; $json['message'] = $message; $json['totalitems'] = $itemscount; $json['itemsperpage'] = $itemsperpage; $json['data'] = $data; return json_encode($json); } else { $txt = ''; $writer = xmlwriter_open_memory(); xmlwriter_set_indent($writer, 2); xmlwriter_start_document($writer); xmlwriter_start_element($writer, 'ocs'); xmlwriter_start_element($writer, 'meta'); xmlwriter_write_element($writer, 'status', $status); xmlwriter_write_element($writer, 'statuscode', $statuscode); xmlwriter_write_element($writer, 'message', $message); if ($itemscount != '') { xmlwriter_write_element($writer, 'totalitems', $itemscount); } if (!empty($itemsperpage)) { xmlwriter_write_element($writer, 'itemsperpage', $itemsperpage); } xmlwriter_end_element($writer); if ($dimension == '0') { // 0 dimensions xmlwriter_write_element($writer, 'data', $data); } elseif ($dimension == '1') { xmlwriter_start_element($writer, 'data'); foreach ($data as $key => $entry) { xmlwriter_write_element($writer, $key, $entry); } xmlwriter_end_element($writer); } elseif ($dimension == '2') { xmlwriter_start_element($writer, 'data'); foreach ($data as $entry) { xmlwriter_start_element($writer, $tag); if (!empty($tagattribute)) { xmlwriter_write_attribute($writer, 'details', $tagattribute); } foreach ($entry as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { xmlwriter_write_element($writer, $k, $v); } } else { xmlwriter_write_element($writer, $key, $value); } } xmlwriter_end_element($writer); } xmlwriter_end_element($writer); } elseif ($dimension == '3') { xmlwriter_start_element($writer, 'data'); foreach ($data as $entrykey => $entry) { xmlwriter_start_element($writer, $tag); if (!empty($tagattribute)) { xmlwriter_write_attribute($writer, 'details', $tagattribute); } foreach ($entry as $key => $value) { if (is_array($value)) { xmlwriter_start_element($writer, $entrykey); foreach ($value as $k => $v) { xmlwriter_write_element($writer, $k, $v); } xmlwriter_end_element($writer); } else { xmlwriter_write_element($writer, $key, $value); } } xmlwriter_end_element($writer); } xmlwriter_end_element($writer); } elseif ($dimension == 'dynamic') { xmlwriter_start_element($writer, 'data'); OC_OCS::toxml($writer, $data, 'comment'); xmlwriter_end_element($writer); } xmlwriter_end_element($writer); xmlwriter_end_document($writer); $txt .= xmlwriter_output_memory($writer); unset($writer); return $txt; } }
/** * Make XML document using built-in XMLWriter functionality * @return string */ function makeXML_XMLWriter() { // XMLWriter object instance $this->xml = xmlwriter_open_memory(); // Indentation xmlwriter_set_indent($this->xml, $this->indent); xmlwriter_set_indent_string($this->xml, $this->indent_string); // XML Document declaration xmlwriter_start_document($this->xml, '1.0', $this->encoding, 'yes'); // <ROOT> xmlwriter_start_element($this->xml, $this->root_name); // <header> xmlwriter_start_element($this->xml, 'header'); // <service> xmlwriter_start_element($this->xml, 'service'); $this->xmlwriter_write_cdata($this->header_service); xmlwriter_end_element($this->xml); // </service> // <status> xmlwriter_start_element($this->xml, 'status'); $this->xmlwriter_write_cdata($this->header_status); xmlwriter_end_element($this->xml); // </status> // <message> xmlwriter_start_element($this->xml, 'message'); $this->xmlwriter_write_cdata($this->header_message); xmlwriter_end_element($this->xml); // </message> xmlwriter_end_element($this->xml); // </header> // <data> xmlwriter_start_element($this->xml, 'data'); $this->dataElement($this->xml_data, ''); xmlwriter_end_element($this->xml); // </data> if (!empty($this->debug_timers) && is_array($this->debug_timers)) { // <debug_timers> xmlwriter_start_element($this->xml, 'debug_timers'); foreach ($this->debug_timers as $key => $val) { xmlwriter_start_element($this->xml, $key); $this->xmlwriter_write_cdata($val); xmlwriter_end_element($this->xml); } xmlwriter_end_element($this->xml); // </debug_timers> } xmlwriter_end_element($this->xml); // <ROOT> xmlwriter_end_document($this->xml); // Finish XML document // Generate XML string return xmlwriter_output_memory($this->xml, true); }
} $attrs = array(); $attrs['xmlns'] = 'http://api.' . $API_DOMAIN_DOT_SUFFIX . '/' . $version . '/'; $attrs['xmlns:xsi'] = 'http://www.w3.org/2001/XMLSchema-instance'; if ($method_underscore != 'fql_query') { $attrs['xsi:schemaLocation'] = 'http://api.' . $API_DOMAIN_DOT_SUFFIX . '/' . $version . '/ http://api.' . $API_DOMAIN_DOT_SUFFIX . '/' . $version . '/facebook.xsd'; } if (is_array($result) && isset($result[0]) && $result[0] instanceof xml_element) { $attrs['list'] = 'true'; api_xml3_render_object($xml_memory, new xml_element($name, $result, $attrs)); } else { api_xml2_render_object($xml_memory, $name, $result, $attrs); } break; } xmlwriter_end_document($xml_memory); // Write XML response $xml = xmlwriter_output_memory($xml_memory, true); if ($req_callback) { $xml = addslashes($xml); $xml = str_replace("\n", '\\n', $xml); echo $req_callback . '(\'' . $xml . '\');'; } else { echo $xml; } break; case 'json': $json = api_json2_render_object($result); if ($req_callback) { echo $req_callback . '(' . $json . ');'; } else {
<?php $writer = xmlwriter_open_memory(); xmlwriter_set_indent_string($writer, '#'); // The second arg is supposedly required. But just keep executing anyway and use // the previous value... xmlwriter_set_indent_string($writer); xmlwriter_set_indent($writer, true); xmlwriter_start_document($writer, '1.0'); xmlwriter_start_element($writer, 'foo'); xmlwriter_start_element($writer, 'bar'); xmlwriter_end_element($writer); xmlwriter_end_element($writer); xmlwriter_end_document($writer); var_dump(xmlwriter_output_memory($writer));
VERIFY(xmlwriter_start_element($xml, "node")); VERIFY(xmlwriter_start_cdata($xml)); VERIFY(xmlwriter_text($xml, "Raw text")); VERIFY(xmlwriter_end_cdata($xml)); VERIFY(xmlwriter_end_element($xml)); VERIFY(xmlwriter_start_element($xml, "node")); VERIFY(xmlwriter_write_cdata($xml, "More CDATA")); VERIFY(xmlwriter_end_element($xml)); VERIFY(xmlwriter_start_comment($xml)); VERIFY(xmlwriter_text($xml, "Comments")); VERIFY(xmlwriter_end_comment($xml)); VERIFY(xmlwriter_write_comment($xml, "More comments")); VERIFY(xmlwriter_start_pi($xml, "lol")); VERIFY(xmlwriter_end_pi($xml)); VERIFY(xmlwriter_write_pi($xml, "php", "print 'Hello world!';")); VERIFY(xmlwriter_write_raw($xml, "<node>Raw XML</node>")); VERIFY(xmlwriter_write_dtd($xml, "name", "publicID", "systemID", "subset")); VERIFY(xmlwriter_start_dtd($xml, "name", "publicID", "systemID")); VERIFY(xmlwriter_end_dtd($xml)); VERIFY(xmlwriter_start_dtd_element($xml, "name")); VERIFY(xmlwriter_end_dtd_element($xml)); VERIFY(xmlwriter_write_dtd_element($xml, "name", "content")); VERIFY(xmlwriter_start_dtd_attlist($xml, "name")); VERIFY(xmlwriter_end_dtd_attlist($xml)); VERIFY(xmlwriter_write_dtd_attlist($xml, "name", "content")); VERIFY(xmlwriter_start_dtd_entity($xml, "name", false)); VERIFY(xmlwriter_end_dtd_entity($xml)); VERIFY(xmlwriter_write_dtd_entity($xml, "name", "content", false, "publicid", "systemid", "ndataid")); VERIFY(xmlwriter_end_document($xml)); var_dump(xmlwriter_flush($xml)); var_dump(xmlwriter_output_memory($xml));