当前位置: 首页>>代码示例>>PHP>>正文


PHP xml_parser_free函数代码示例

本文整理汇总了PHP中xml_parser_free函数的典型用法代码示例。如果您正苦于以下问题:PHP xml_parser_free函数的具体用法?PHP xml_parser_free怎么用?PHP xml_parser_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了xml_parser_free函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: parse

 public function parse($xml_or_arr)
 {
     if (is_array($xml_or_arr)) {
         $output = array();
         foreach ($xml_or_arr as $val) {
             $to = $this->parse($val);
             $output = array_merge($output, $to);
         }
         return $output;
     }
     //		echo '<h1>xml in parser:</h1><pre>'; print_r($xml); echo '</pre>';
     // if we don't start with a processing instruction,
     // we add an outer node just to ensure it's a valid xml document
     // (i.e. only a single root node)
     if (substr($xml_or_arr, 0, 2) != '<?') {
         $xml_or_arr = "<{$this->insertedNode}>" . $xml_or_arr . "</{$this->insertedNode}>";
     }
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, "tagOpen", "tagClosed");
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
     xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
     xml_set_character_data_handler($this->parser, "tagData");
     $this->xmldata = xml_parse($this->parser, $xml_or_arr);
     if (!$this->xmldata) {
         die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser)));
     }
     xml_parser_free($this->parser);
     $this->parseCompleted();
     return $this->output;
 }
开发者ID:ilri,项目名称:genebank-gg_server,代码行数:31,代码来源:parsers.php

示例2: get_xml_tree

 /**
  * 获取xml树
  * @param string $xmldata xml数据
  * @param array $result xml内容
  */
 static function get_xml_tree($xmldata, &$result)
 {
     ini_set('track_errors', '1');
     $xmlreaderror = false;
     $parser = xml_parser_create();
     xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
     xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
     if (!xml_parse_into_struct($parser, $xmldata, $vals, $index)) {
         $xmlreaderror = true;
         return 0;
     }
     xml_parser_free($parser);
     if (!$xmlreaderror) {
         $result = array();
         $i = 0;
         if (isset($vals[$i]['attributes'])) {
             foreach (array_keys($vals[$i]['attributes']) as $attkey) {
                 $attributes[$attkey] = $vals[$i]['attributes'][$attkey];
             }
         }
         $result[$vals[$i]['tag']] = array_merge((array) $attributes, self::get_children($vals, $i, 'open'));
     }
     ini_set('track_errors', '0');
     return 1;
 }
开发者ID:jianchengdu,项目名称:dangjia,代码行数:30,代码来源:XmlTool.php

示例3: _loadTranslationData

 /**
  * Load translation data (TBX file reader)
  *
  * @param  string  $filename  TBX file to add, full path must be given for access
  * @param  string  $locale    Locale has no effect for TBX because TBX defines all languages within
  *                            the source file
  * @param  array   $option    OPTIONAL Options to use
  * @throws Zend_Translation_Exception
  * @return array
  */
 protected function _loadTranslationData($filename, $locale, array $options = array())
 {
     $this->_data = array();
     if (!is_readable($filename)) {
         require_once 'Zend/Translate/Exception.php';
         throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
     }
     $encoding = $this->_findEncoding($filename);
     $this->_file = xml_parser_create($encoding);
     xml_set_object($this->_file, $this);
     xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0);
     xml_set_element_handler($this->_file, "_startElement", "_endElement");
     xml_set_character_data_handler($this->_file, "_contentElement");
     try {
         Zend_Xml_Security::scanFile($filename);
     } catch (Zend_Xml_Exception $e) {
         require_once 'Zend/Translate/Exception.php';
         throw new Zend_Translate_Exception($e->getMessage());
     }
     if (!xml_parse($this->_file, file_get_contents($filename))) {
         $ex = sprintf('XML error: %s at line %d of file %s', xml_error_string(xml_get_error_code($this->_file)), xml_get_current_line_number($this->_file), $filename);
         xml_parser_free($this->_file);
         require_once 'Zend/Translate/Exception.php';
         throw new Zend_Translate_Exception($ex);
     }
     return $this->_data;
 }
开发者ID:conectapb,项目名称:sysagroweb,代码行数:37,代码来源:Tbx.php

示例4: MagpieRSS

 function MagpieRSS($source)
 {
     # if PHP xml isn't compiled in, die
     #
     if (!function_exists('xml_parser_create')) {
         trigger_error("Failed to load PHP's XML Extension. http://www.php.net/manual/en/ref.xml.php");
     }
     $parser = @xml_parser_create();
     if (!is_resource($parser)) {
         trigger_error("Failed to create an instance of PHP's XML parser. http://www.php.net/manual/en/ref.xml.php");
     }
     $this->parser = $parser;
     # pass in parser, and a reference to this object
     # set up handlers
     #
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, 'feed_start_element', 'feed_end_element');
     xml_set_character_data_handler($this->parser, 'feed_cdata');
     $status = xml_parse($this->parser, $source);
     if (!$status) {
         $errorcode = xml_get_error_code($this->parser);
         if ($errorcode != XML_ERROR_NONE) {
             $xml_error = xml_error_string($errorcode);
             $error_line = xml_get_current_line_number($this->parser);
             $error_col = xml_get_current_column_number($this->parser);
             $errormsg = "{$xml_error} at line {$error_line}, column {$error_col}";
             $this->error($errormsg);
         }
     }
     xml_parser_free($this->parser);
     $this->normalize();
 }
开发者ID:Esleelkartea,项目名称:herramienta_para_autodiagnostico_ADEADA,代码行数:32,代码来源:rss.php

示例5: __destroy

 /**
  * Destructor
  * @return void
  */
 public function __destroy()
 {
     if ($this->parser) {
         xml_parse($this->parser, '', true);
         xml_parser_free($this->parser);
     }
 }
开发者ID:cobolbaby,项目名称:phpdaemon,代码行数:11,代码来源:XMLStream.php

示例6: reset

 function reset()
 {
     if ($this->parser) {
         xml_parser_free($this->parser);
     }
     // XML file pointer
     $this->fp = 0;
     // which data has been read?
     $this->metaDataRead = 0;
     $this->allRead = 0;
     // to maintain track of where we are inside the XML file
     $this->inXml = 0;
     $this->inData = 0;
     $this->inMeta = 0;
     $this->inSkin = 0;
     $this->inTemplate = 0;
     $this->currentName = '';
     $this->currentPartName = '';
     // character data pile
     $this->cdata = '';
     // list of skinnames and templatenames (will be array of array)
     $this->skins = array();
     $this->templates = array();
     // extra info included in the XML files (e.g. installation notes)
     $this->info = '';
     // init XML parser
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, 'startElement', 'endElement');
     xml_set_character_data_handler($this->parser, 'characterData');
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
 }
开发者ID:hatone,项目名称:Nucleus-v3.64,代码行数:32,代码来源:skinie.php

示例7: readConfig

 function readConfig($filename)
 {
     // read the xml database
     //print "FILE: $filename";
     $data = implode("", file($filename));
     $parser = xml_parser_create();
     xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
     xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
     xml_parse_into_struct($parser, $data, $values, $tags);
     xml_parser_free($parser);
     // loop through the structures
     foreach ($tags as $key => $val) {
         if ($key == "node") {
             $noderanges = $val;
             // each contiguous pair of array entries are the
             // lower and upper range for each node definition
             for ($i = 0; $i < count($noderanges); $i += 2) {
                 $offset = $noderanges[$i] + 1;
                 $len = $noderanges[$i + 1] - $offset;
                 $tdb[] = $this->parseXML(array_slice($values, $offset, $len));
             }
         } else {
             continue;
         }
     }
     return $tdb;
 }
开发者ID:BackupTheBerlios,项目名称:chits-svn,代码行数:27,代码来源:class.datanode.php

示例8: parseRSS

function parseRSS($url)
{
    //PARSE RSS FEED
    $feedeed = implode('', file($url));
    $parser = xml_parser_create();
    xml_parse_into_struct($parser, $feedeed, $valueals, $index);
    xml_parser_free($parser);
    //CONSTRUCT ARRAY
    foreach ($valueals as $keyey => $valueal) {
        if ($valueal['type'] != 'cdata') {
            $item[$keyey] = $valueal;
        }
    }
    $i = 0;
    foreach ($item as $key => $value) {
        if ($value['type'] == 'open') {
            $i++;
            $itemame[$i] = $value['tag'];
        } elseif ($value['type'] == 'close') {
            $feed = $values[$i];
            $item = $itemame[$i];
            $i--;
            if (count($values[$i]) > 1) {
                $values[$i][$item][] = $feed;
            } else {
                $values[$i][$item] = $feed;
            }
        } else {
            $values[$i][$value['tag']] = $value['value'];
        }
    }
    //RETURN ARRAY VALUES
    return $values[0];
}
开发者ID:rckarchitects,项目名称:cornerstone-rcka,代码行数:34,代码来源:inc_feeds.php

示例9: parseFile

 function parseFile($fileLocation)
 {
     // reset it.
     $this->_docType = NULL;
     $this->_nameSpace = NULL;
     $this->_errors = NULL;
     $fp = @fopen($fileLocation, 'r');
     if ($fp) {
         $parser = xml_parser_create('ISO-8859-1');
         xml_set_object($parser, $this);
         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, FALSE);
         xml_set_element_handler($parser, "_startElement", "_endElement");
         while ($data = fread($fp, 1024)) {
             if (strlen($this->_docType) > 0) {
                 break;
             }
             if (!xml_parse($parser, $data, feof($fp))) {
                 $error = xml_error_string(xml_get_error_code($parser));
                 break;
             }
         }
         xml_parser_free($parser);
         @fclose(fp);
         return TRUE;
     } else {
         $this->_errors[] = 'File ' . $fileLocation . ' could not be opened.';
         return FALSE;
     }
 }
开发者ID:horrabin,项目名称:opendb,代码行数:29,代码来源:DocTypeNameSpaceXMLParser.class.php

示例10: discuz

 /**
  * 使用discuz词库
  * @param unknown_type $title
  * @param unknown_type $content
  */
 public static function discuz($title = '', $content = '')
 {
     $subjectenc = rawurlencode(strip_tags($title));
     $messageenc = rawurlencode(strip_tags(preg_replace("/\\[.+?\\]/U", '', $content)));
     $data = @implode('', file("http://keyword.discuz.com/related_kw.html?title={$subjectenc}&content={$messageenc}&ics=utf-8&ocs=utf-8"));
     if ($data) {
         $parser = xml_parser_create();
         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
         xml_parse_into_struct($parser, $data, $values, $index);
         xml_parser_free($parser);
         $kws = array();
         foreach ($values as $valuearray) {
             if ($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') {
                 $kws[] = trim($valuearray['value']);
             }
         }
         $return = '';
         if ($kws) {
             foreach ($kws as $kw) {
                 $kw = CHtml::encode(strip_tags($kw));
                 $return .= $dot . $kw;
                 $dot = ',';
             }
             $return = trim($return);
         }
         return $return;
     }
 }
开发者ID:zywh,项目名称:maplecity,代码行数:34,代码来源:XAutoKeyword.php

示例11: parse

 public function parse($data)
 {
     $p = xml_parser_create();
     xml_parse_into_struct($p, $data, $vals, $index);
     xml_parser_free($p);
     return $vals;
 }
开发者ID:aurora-framework,项目名称:filesystem,代码行数:7,代码来源:XML.php

示例12: analyser_XML

 /** 
  * Pour tester la validité d'un document XML, on peut utiliser un analyseur syntaxique XML : http://fr3.php.net/manual/fr/book.xml.php
  * Voir en particulier l'exemple http://fr3.php.net/manual/fr/example.xml-structure.php
  * 
  * Mais ceci ne permet pas de vérifier la conformité d'un XML avec une DTD.
  * DOMDocument le permet : http://fr2.php.net/manual/fr/domdocument.validate.php
  * Mais d'une part ça emmet des warnings et d'autre part ça ne retourne qu'un booléen sans détails sur les erreurs trouvées
  * 
  * Pour y remédier on peut utiliser cette extention de classe "MyDOMDocument" : http://fr2.php.net/manual/fr/domdocument.validate.php#85792
  * Mais attention : il faut lui fournir un objet DOMDocument et load ou loadXML provoquent des warnings préliminaires si le XML est mal formé.
  * 
  * Ma solution est d'utiliser :
  * 1. dans un premier temps l'analyseur syntaxique XML xml_parse pour vérifier que le XML est bien formé
  * 2. dans un second temps l'extention de classe MyDOMDocument pour vérifier la conformité avec la DTD
  * 
  * J'en ai fait la fonction ci-dessous "analyser_XML($fichier)".
  * La classe "MyDOMDocument" est dans autochargée (elle se trouve ici : _inc/class.domdocument.php).
  * 
  * @param string    $fichier_adresse
  * @return string   'ok' ou un message d'erreur
  */
 private static function analyser_XML($fichier_adresse)
 {
   // Récupération du contenu du fichier
   $fichier_contenu = file_get_contents($fichier_adresse);
   $fichier_contenu = To::deleteBOM(To::utf8($fichier_contenu)); // Mettre en UTF-8 si besoin et retirer le BOM éventuel
   FileSystem::ecrire_fichier($fichier_adresse,$fichier_contenu); // Mettre à jour le fichier au cas où.
   // Analyse XML (s'arrête à la 1ère erreur trouvée)
   $xml_parser = xml_parser_create();
   $valid_XML = xml_parse($xml_parser , $fichier_contenu , TRUE);
   if(!$valid_XML)
   {
     return sprintf("Erreur XML ligne %d (%s)" , xml_get_current_line_number($xml_parser) , xml_error_string(xml_get_error_code($xml_parser)));
   }
   xml_parser_free($xml_parser);
   // Analyse DTD (renvoie un tableau d'erreurs, affiche la dernière)
   $xml = new DOMDocument;
   $xml -> load($fichier_adresse);
   $xml = new MyDOMDocument($xml);
   $valid_DTD = $xml->validate();
   if(!$valid_DTD)
   {
     return 'Erreur DTD : '.end($xml->errors);
   }
   // Tout est ok
   return 'ok';
 }
开发者ID:rhertzog,项目名称:lcs,代码行数:47,代码来源:class.ServeurCommunautaire.php

示例13: fetch

 function fetch($raw_xml, $final = true)
 {
     $this->log .= 'fetch() called.' . PHP_EOL;
     $this->log .= 'Raw XML:' . PHP_EOL . $raw_xml . PHP_EOL . PHP_EOL;
     $this->index = 0;
     $this->data = new stdClass();
     $this->stack = array();
     $this->stack[] =& $this->data;
     $this->parser = xml_parser_create('UTF-8');
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, 'tag_open', 'tag_close');
     xml_set_character_data_handler($this->parser, 'cdata');
     xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
     xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
     $start = 0;
     $length = strlen($raw_xml);
     $chunk_size = 32 * 1024 * 1024;
     $ret = true;
     while (true) {
         if (!($parsed_xml = xml_parse($this->parser, substr($raw_xml, $start, $chunk_size), $final = ($start += $chunk_size) >= $length ? true : false))) {
             $this->log .= $ret = sprintf('XML error: %s at line %d.', xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser));
             break;
         } else {
             if ($final) {
                 break;
             }
         }
     }
     xml_parser_free($this->parser);
     return $ret;
 }
开发者ID:nickhype,项目名称:HackeyWalk-site-backup,代码行数:32,代码来源:xml.php

示例14: info

function info($fisbn, &$isbn10, &$isbn13, &$title, &$title_ext, &$author, &$publisher, $dump = false) {
    global $LOOKUP_URL, $LOOKUP_KEY;
    $full_url = $LOOKUP_URL . "access_key=" . $LOOKUP_KEY . "&index1=isbn&value1=" . $fisbn;
    $contents = file_get_contents($full_url);
    $parser = xml_parser_create();
    xml_parse_into_struct($parser, $contents, $values, $index);
    xml_parser_free($parser);
    $num_results = $values[$index['BOOKLIST'][0]];
    if($num_results == 0) { // bad ISBN
        return false;
    }
    $indx = $index['BOOKDATA'][0];
    $isbn10 = $values[$indx]['attributes']['ISBN'];
    $isbn13 = $values[$indx]['attributes']['ISBN13'];
    $title = $values[$index['TITLE'][0]]['value'];
    $title_ext = $values[$index['TITLELONG'][0]]['value'];
    $author = $values[$index['AUTHORSTEXT'][0]]['value'];
    $publisher = $values[$index['PUBLISHERTEXT'][0]]['value'];
    
    if(!$dump)
        return true;
    print_r($index);
    echo '<br />';
    print_r($values);
    return true;
}
开发者ID:n1ckyoung,项目名称:bellbook,代码行数:26,代码来源:lookup.php

示例15: postToEWAY

 function postToEWAY($payment_id, $url, $vars)
 {
     global $db;
     $varsx = array();
     foreach ($vars as $k => $v) {
         $varsx[] = urlencode($k) . "=" . urlencode($v);
     }
     $result = get_url($url = $url . "?" . join('&', $varsx));
     $payment = $db->get_payment($payment_id);
     $payment['data'][] = $vars;
     $payment['data'][] = array('result' => $result);
     // Simple parser
     $parser = xml_parser_create();
     xml_parse_into_struct($parser, $result, $vals, $index);
     xml_parser_free($parser);
     foreach ($index as $k => $v) {
         foreach ($v as $vv) {
             if ($vals[$vv]['value']) {
                 $ret[$k] = $vals[$vv]['value'];
             }
         }
     }
     $payment['data'][] = $ret;
     $db->update_payment($payment_id, $payment);
     return $ret;
 }
开发者ID:subashemphasize,项目名称:test_site,代码行数:26,代码来源:eway_international.inc.php


注:本文中的xml_parser_free函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。