<?php $xw = xmlwriter_open_memory(); xmlwriter_set_indent($xw, true); xmlwriter_start_document($xw); xmlwriter_start_element_ns($xw, 'test', 'test', 'urn:x-test:'); xmlwriter_write_element_ns($xw, 'test', 'foo', null, ''); xmlwriter_write_element_ns($xw, null, 'bar', 'urn:x-test:', ''); xmlwriter_write_element_ns($xw, null, 'bar', '', ''); xmlwriter_end_element($xw); xmlwriter_end_document($xw); print xmlwriter_flush($xw, true); print "\n"; $xw = new XMLWriter(); $xw->openMemory(); $xw->setIndent(true); $xw->startDocument(); $xw->startElementNS('test', 'test', 'urn:x-test:'); $xw->writeElementNS('test', 'foo', null, ''); $xw->writeElementNS(null, 'bar', 'urn:x-test:', ''); $xw->writeElementNS(null, 'bar', '', ''); $xw->endElement(); $xw->endDocument(); print $xw->flush(true);
<?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; }
<?php /* $Id$ */ $xw = xmlwriter_open_memory(); xmlwriter_set_indent($xw, TRUE); xmlwriter_set_indent_string($xw, ' '); xmlwriter_start_document($xw, '1.0', "UTF-8"); xmlwriter_start_element($xw, 'root'); xmlwriter_start_element_ns($xw, 'ns1', 'child1', 'urn:ns1'); xmlwriter_write_attribute_ns($xw, 'ns1', 'att1', 'urn:ns1', '<>"\'&'); xmlwriter_write_element($xw, 'chars', "special characters: <>\"'&"); xmlwriter_end_element($xw); xmlwriter_end_document($xw); // Force to write and empty the buffer $output = xmlwriter_flush($xw, true); print $output;
/** * 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); }
protected function get_xmldata($id = 0, $current_value) { $this->db =& $GLOBALS['phpgw']->db; $id = (int) $id; $sql = "SELECT * FROM fm_entity_1_11 WHERE id = {$id}"; $this->db->query($sql, __LINE__, __FILE__); $anlegg = array(); $TreeID = $this->type; $PeriodFrom = date('Ym'); if ($current_value) { $PeriodTo = 209912; } else { $PeriodTo = '000000'; } $memory = xmlwriter_open_memory(); xmlwriter_set_indent($memory, true); xmlwriter_start_document($memory, '1.0', 'UTF-8'); xmlwriter_start_element($memory, 'TreeListe'); xmlwriter_write_attribute($memory, 'TreeID', $TreeID); xmlwriter_write_attribute($memory, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); xmlwriter_write_attribute($memory, 'xsi:noNamespaceSchemaLocation', 'TreeListe.xsd'); while ($this->db->next_record()) { xmlwriter_start_element($memory, 'Tree'); xmlwriter_write_element($memory, 'ID', 'TJ'); xmlwriter_write_element($memory, 'Verdi', substr($this->db->f('maalepunkt_id'), -8)); xmlwriter_write_element($memory, 'Beskrivelse', $this->db->f('address')); xmlwriter_write_element($memory, 'Firma', 'BB'); xmlwriter_write_element($memory, 'PeriodeFra', $PeriodFrom); xmlwriter_write_element($memory, 'PeriodeTil', $PeriodTo); xmlwriter_write_element($memory, 'Status', 'N'); xmlwriter_start_element($memory, 'BegrepsLister'); xmlwriter_start_element($memory, 'BegrepsListe'); xmlwriter_write_attribute($memory, 'Prosent', 100); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Firma'); xmlwriter_write_element($memory, 'ID', 'A3'); xmlwriter_write_element($memory, 'Verdi', 'BB'); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Art'); xmlwriter_write_element($memory, 'ID', 'A0'); xmlwriter_write_element($memory, 'Verdi', '12304121'); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Asvar'); xmlwriter_write_element($memory, 'ID', 'C1'); xmlwriter_write_element($memory, 'Verdi', 45); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Tjeneste'); xmlwriter_write_element($memory, 'ID', 'TJE'); xmlwriter_write_element($memory, 'Verdi', ''); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Objekt'); xmlwriter_write_element($memory, 'ID', 'F0'); xmlwriter_write_element($memory, 'Verdi', $this->db->f('loc1')); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Prosjekt'); xmlwriter_write_element($memory, 'ID', 'B0'); xmlwriter_write_element($memory, 'Verdi', ''); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'Fagkode'); xmlwriter_write_element($memory, 'ID', 'B1'); xmlwriter_write_element($memory, 'Verdi', '999'); xmlwriter_end_element($memory); xmlwriter_start_element($memory, 'Begrep'); xmlwriter_write_comment($memory, 'AV'); xmlwriter_write_element($memory, 'ID', 'AV'); xmlwriter_write_element($memory, 'Verdi', ''); xmlwriter_end_element($memory); xmlwriter_end_element($memory); xmlwriter_end_element($memory); xmlwriter_end_element($memory); } xmlwriter_end_element($memory); $xml = xmlwriter_output_memory($memory, true); if ($this->debug) { header('Content-type: text/xml'); echo $xml; die; } return $xml; }
$ec = $fax->error_code; $result = $fax; $args = array(); foreach ($request as $key => $val) { $args[] = new api10_arg(array('key' => $key, 'value' => $val)); } $result->request_args = $args; } switch ($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'); switch ($version) { case API_VERSION_10: default: if ($result instanceof Exception) { $name = 'error_response'; } else { $name = $method_underscore . '_response'; } $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';
<?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));
function VS($x, $y) { var_dump($x === $y); if ($x !== $y) { echo "Failed: {$y}\n"; echo "got: {$x}\n"; } } function VERIFY($x) { VS($x, true); } $xml = xmlwriter_open_memory(); var_dump($xml); VERIFY(xmlwriter_set_indent($xml, true)); VERIFY(xmlwriter_set_indent_string($xml, " ")); VERIFY(xmlwriter_start_document($xml, "1.0", "utf-8")); VERIFY(xmlwriter_start_element($xml, "node")); VERIFY(xmlwriter_write_attribute($xml, "name", "value")); VERIFY(xmlwriter_start_attribute($xml, "name2")); VERIFY(xmlwriter_end_attribute($xml)); VERIFY(xmlwriter_write_element($xml, "subnode", "some text")); VERIFY(xmlwriter_end_element($xml)); VERIFY(xmlwriter_start_element_ns($xml, "fb", "node", "http://www.facebook.com/")); VERIFY(xmlwriter_write_attribute_ns($xml, "fb", "attr", "http://www.facebook.com/", "value")); VERIFY(xmlwriter_start_attribute_ns($xml, "fb", "attr2", "http://www.facebook.com/")); VERIFY(xmlwriter_end_attribute($xml)); VERIFY(xmlwriter_write_element_ns($xml, "prefix", "name", "http://some.url/", 1337)); VERIFY(xmlwriter_start_element($xml, "node")); VERIFY(xmlwriter_full_end_element($xml));