コード例 #1
0
ファイル: bug41287.php プロジェクト: badlamer/hhvm
<?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);
コード例 #2
0
ファイル: xmlwriter_mem_ns.php プロジェクト: mig1098/php-src
<?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;
コード例 #3
0
 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;
 }
コード例 #4
0
ファイル: data.php プロジェクト: hjimmy/owncloud
 /**
  * @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;
 }
コード例 #5
0
<?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;
コード例 #6
0
ファイル: ocs.php プロジェクト: ryanshoover/core
 /**
  * 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;
     }
 }
コード例 #7
0
 /**
  * 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);
 }
コード例 #8
0
 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;
 }
コード例 #9
0
ファイル: restserver.php プロジェクト: luxurymask/platform
    $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';
コード例 #10
0
<?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));
コード例 #11
0
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));