日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP擴展之XML操作(三)——XML解析器使用及相關函數

瀏覽:21日期:2022-09-16 10:08:38
一、XML 元素結構例程

第一個例程縮進顯示文檔中的開始元素結構。

Example #1 顯示 XML 元素結構

<?php$file?=?'data.xml';$depth?=?array();

function?startElement($parser,?$name,?$attrs){global?$depth;for?($i?=?0;?$i?<?$depth[$parser];?$i++)?{echo?'??';}echo?'$namen';$depth[$parser]++;}

function?endElement($parser,?$name){global?$depth;$depth[$parser]--;}

$xml_parser?=?xml_parser_create();xml_set_element_handler($xml_parser,?'startElement',?'endElement');if?(!($fp?=?fopen($file,?'r')))?{die('could?not?open?XML?input');}

while?($data?=?fread($fp,?4096))?{if?(!xml_parse($xml_parser,?$data,?feof($fp)))?{die(sprintf('XML?error:?%s?at?line?%d',xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));}}xml_parser_free($xml_parser);?>二、XML 標簽映射例程

Example #1 將 XML 映射為 HTML

此例程直接地將 XML 標簽映射為 HTML 標簽。 在“map_array”中未找到的元素將被忽略。 當然,此例程只針對特定的 XML 文檔類型起作用。

<?php$file?=?'data.xml';$map_array?=?array('BOLD'?????=>?'B','EMPHASIS'?=>?'I','LITERAL'??=>?'TT');

function?startElement($parser,?$name,?$attrs){global?$map_array;if?(isset($map_array[$name]))?{echo?'<$map_array[$name]>';}}

function?endElement($parser,?$name){global?$map_array;if?(isset($map_array[$name]))?{echo?'</$map_array[$name]>';}}

function?characterData($parser,?$data){echo?$data;}

$xml_parser?=?xml_parser_create();//?use?case-folding?so?we?are?sure?to?find?the?tag?in?$map_arrayxml_parser_set_option($xml_parser,?XML_OPTION_CASE_FOLDING,?true);xml_set_element_handler($xml_parser,?'startElement',?'endElement');xml_set_character_data_handler($xml_parser,?'characterData');if?(!($fp?=?fopen($file,?'r')))?{die('could?not?open?XML?input');}

while?($data?=?fread($fp,?4096))?{if?(!xml_parse($xml_parser,?$data,?feof($fp)))?{die(sprintf('XML?error:?%s?at?line?%d',xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));}}xml_parser_free($xml_parser);?>三、XML 外部實體例程

此例程用于加亮 XML 代碼。舉例說明如何使用外部實體引用來包含和解析其他文檔, 及處理指令是如何被處理的,及判斷處理指令所包含代碼是否“可信任”的一種方法

用于此例程的 XML 文檔位于此例程的下方(xmltest.xml?和?xmltest2.xml)。

Example #1 外部實體例程

<?php$file?=?'xmltest.xml';

function?trustedFile($file){//?僅信任本地文件if?(!preg_match('@^([a-z]+)://@i',?$file)&&?fileowner($file)?==?getmyuid())?{return?true;}return?false;}

function?startElement($parser,?$name,?$attribs){echo?'&lt;<font?color='#0000cc'>$name</font>';if?(count($attribs))?{foreach?($attribs?as?$k?=>?$v)?{echo?'?<font?color='#009900'>$k</font>='<fontcolor='#990000'>$v</font>'';}}echo?'&gt;';}

function?endElement($parser,?$name){echo?'&lt;/<font?color='#0000cc'>$name</font>&gt;';}

function?characterData($parser,?$data){echo?'<b>$data</b>';}

function?PIHandler($parser,?$target,?$data){switch?(strtolower($target))?{case?'php':global?$parser_file;//?如何要解析的文檔是“可信任”的,?則說明可安全//?地執行其內部的?PHP?代碼。否則,顯示代碼內容。if?(trustedFile($parser_file[$parser]))?{eval($data);}?else?{printf('Untrusted?PHP?code:?<i>%s</i>',htmlspecialchars($data));}break;}}

function?defaultHandler($parser,?$data){if?(substr($data,?0,?1)?==?'&'?&&?substr($data,?-1,?1)?==?';')?{printf(’<font?color='#aa00aa'>%s</font>’,htmlspecialchars($data));}?else?{printf(’<font?size='-1'>%s</font>’,htmlspecialchars($data));}}

function?externalEntityRefHandler($parser,?$openEntityNames,?$base,?$systemId,$publicId)?{if?($systemId)?{if?(!list($parser,?$fp)?=?new_xml_parser($systemId))?{printf('Could?not?open?entity?%s?at?%sn',?$openEntityNames,$systemId);return?false;}while?($data?=?fread($fp,?4096))?{if?(!xml_parse($parser,?$data,?feof($fp)))?{printf('XML?error:?%s?at?line?%d?while?parsing?entity?%sn',xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser),?$openEntityNames);xml_parser_free($parser);return?false;}}xml_parser_free($parser);return?true;}return?false;}

function?new_xml_parser($file){global?$parser_file;

$xml_parser?=?xml_parser_create();xml_parser_set_option($xml_parser,?XML_OPTION_CASE_FOLDING,?1);xml_set_element_handler($xml_parser,?'startElement',?'endElement');xml_set_character_data_handler($xml_parser,?'characterData');xml_set_processing_instruction_handler($xml_parser,?'PIHandler');xml_set_default_handler($xml_parser,?'defaultHandler');xml_set_external_entity_ref_handler($xml_parser,?'externalEntityRefHandler');

if?(!($fp?=?@fopen($file,?'r')))?{return?false;}if?(!is_array($parser_file))?{settype($parser_file,?'array');}$parser_file[$xml_parser]?=?$file;return?array($xml_parser,?$fp);}

if?(!(list($xml_parser,?$fp)?=?new_xml_parser($file)))?{die('could?not?open?XML?input');}

echo?'<pre>';while?($data?=?fread($fp,?4096))?{if?(!xml_parse($xml_parser,?$data,?feof($fp)))?{die(sprintf('XML?error:?%s?at?line?%dn',xml_error_string(xml_get_error_code($xml_parser)),xml_get_current_line_number($xml_parser)));}}echo?'</pre>';echo?'parse?completen';xml_parser_free($xml_parser);

?>

Example #2 xmltest.xml

<?xml version=’1.0’?><!DOCTYPE chapter SYSTEM '/just/a/test.dtd' [<!ENTITY plainEntity 'FOO entity'><!ENTITY systemEntity SYSTEM 'xmltest2.xml'>]><chapter> <TITLE>Title &plainEntity;</TITLE> <para> <informaltable> <tgroup cols='3'> <tbody> <row><entry>a1</entry><entry morerows='1'>b1</entry><entry>c1</entry></row> <row><entry>a2</entry><entry>c2</entry></row> <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row> </tbody> </tgroup> </informaltable> </para> &systemEntity; <section id='about'> <title>About this Document</title> <para> <!-- this is a comment --> <?php echo ’Hi! This is PHP version ’ . phpversion(); ?> </para> </section></chapter>

此文件包含在?xmltest.xml?中:

Example #3 xmltest2.xml

<?xml version='1.0'?><!DOCTYPE foo [<!ENTITY testEnt 'test entity'>]><foo> <element attrib='value'/> &testEnt; <?php echo 'This is some more PHP code being executed.'; ?></foo>四、XML解析器函數utf8_decode?— 將用 UTF-8 方式編碼的 ISO-8859-1 字符串轉換成單字節的 ISO-8859-1 字符串。utf8_encode?— 將 ISO-8859-1 編碼的字符串轉換為 UTF-8 編碼xml_error_string?— 獲取 XML 解析器的錯誤字符串xml_get_current_byte_index?— 獲取 XML 解析器的當前字節索引xml_get_current_column_number?— 獲取 XML 解析器的當前列號xml_get_current_line_number?— 獲取 XML 解析器的當前行號xml_get_error_code?— 獲取 XML 解析器錯誤代碼xml_parse_into_struct?— 將 XML 數據解析到數組中xml_parse?— 開始解析一個 XML 文檔xml_parser_create_ns?— 生成一個支持命名空間的 XML 解析器xml_parser_create?— 建立一個 XML 解析器xml_parser_free?— 釋放指定的 XML 解析器xml_parser_get_option?— 從 XML 解析器獲取選項設置信息xml_parser_set_option?— 為指定 XML 解析進行選項設置xml_set_character_data_handler?— 建立字符數據處理器xml_set_default_handler?— 建立默認處理器xml_set_element_handler?— 建立起始和終止元素處理器xml_set_end_namespace_decl_handler?— 建立終止命名空間聲明處理器xml_set_external_entity_ref_handler?— 建立外部實體指向處理器xml_set_notation_decl_handler?— 建立注釋聲明處理器xml_set_object?— 在對象中使用 XML 解析器xml_set_processing_instruction_handler?— 建立處理指令(PI)處理器xml_set_start_namespace_decl_handler?— 建立起始命名空間聲明處理器xml_set_unparsed_entity_decl_handler?— 建立未解析實體定義聲明處理器

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美激情电影| 国产手机视频一区二区| 国产亚洲网站| 久久精品高清| 欧美一区二区三区高清视频| 天堂网av成人| 国产一区二区中文| 国产h片在线观看| 欧美三级网址| 欧美va天堂在线| 亚洲播播91| 欧美日韩在线播放视频| 在线亚洲国产精品网站| 香蕉久久夜色精品国产| 亚洲精品美女91| 欧美日韩午夜| 欧美激情三区| 都市激情国产精品| 久久一区二区三区电影| 欧美日韩视频| 免费的成人av| 国产欧美日韩一区二区三区在线| 欧美黄色一区| 日韩欧美午夜| 中文久久精品| 亚洲免费毛片| 美女精品久久| 久久精品欧美一区| 久久性天堂网| 国产伦精品一区二区三区视频| 国产精品观看| 日韩不卡在线| 久久亚洲精品伦理| 国产精东传媒成人av电影| 久久精品色播| 欧美日韩免费观看一区=区三区| 日本在线视频一区二区| 精品国产一区二区三区2021| 欧美一级精品| 日韩国产欧美三级| 久久久久久久久成人| 亚洲香蕉网站| 久久久精品日韩| 亚洲五月综合| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产日韩一区二区三区在线播放| 国产精品一区亚洲| 久久青青视频| 一本一道久久a久久| 国产精品传媒麻豆hd| 久久精品123| 日韩成人午夜精品| 日韩精品免费一区二区三区| 亚洲精品裸体| 日本精品影院| 国产亚洲欧美日韩精品一区二区三区| 久久裸体视频| 久久国产精品免费一区二区三区| 日韩欧美少妇| 日韩高清电影一区| 成人久久久久| 蜜臀精品一区二区三区在线观看| 国产精品多人| 香蕉成人久久| 高潮久久久久久久久久久久久久| 六月婷婷一区| 国产精品99久久精品| 一区二区国产在线观看| 日韩网站中文字幕| 国产欧美丝祙| 热久久久久久久| 国产盗摄——sm在线视频| 日本在线视频一区二区| 久久精品99久久无色码中文字幕| 日韩av在线免费观看不卡| 美女毛片一区二区三区四区| 久久精品一区二区国产| 免费不卡在线观看| 亚洲成人一区在线观看| 国产麻豆精品久久| 亚洲我射av| 欧美午夜不卡| 蜜桃av在线播放| 国产精品videosex极品| 一区二区三区四区在线观看国产日韩| 精品成人免费一区二区在线播放| 久久av网站| 日本aⅴ亚洲精品中文乱码| 狠狠干综合网| 日本少妇一区| 日韩在线中文| 国产成人久久| 91精品国产自产在线丝袜啪| 日韩天堂av| 日韩精品电影| 国产精品亚洲综合久久| 亚洲乱码视频| 一区久久精品| 久久婷婷丁香| 国产一区二区三区四区大秀 | 日韩av成人高清| 亚洲综合精品| 免费精品国产的网站免费观看| 激情久久一区二区| 国产精品自在| 四虎成人精品一区二区免费网站| 欧美日韩黑人| 欧美日韩在线播放视频| av一区在线| 9999国产精品| 亚洲三级欧美| av中文字幕在线观看第一页 | 国产精品手机在线播放| 亚洲精品在线国产| 亚洲伊人影院| 一区二区国产在线观看| 免费视频最近日韩| 国产亚洲一级| 国产免费成人| 亚洲国产成人精品女人| 99久久久久| 日韩精品一区二区三区免费观影| 日韩一区电影| 国产综合婷婷| 欧美亚洲国产一区| 欧美在线亚洲| 亚洲二区三区不卡| 国产农村妇女精品一区二区 | 香蕉精品视频在线观看| 欧洲激情综合| 影院欧美亚洲| 亚洲一级大片| 日韩一区二区三区精品 | 欧美日韩免费看片| 性欧美xxxx免费岛国不卡电影| 久久精品国产www456c0m| 五月婷婷六月综合| 六月婷婷一区| 日韩精品导航| 国产精品九九| a天堂资源在线| 亚洲大片在线| 视频在线观看一区二区三区| 中文字幕中文字幕精品| 欧美亚洲专区| 国产精品亚洲综合色区韩国| 久久精品国产99国产| 欧美激情另类| jiujiure精品视频播放| 综合视频一区| 国产精品夜夜夜| a国产在线视频| 在线一区电影| 日韩精品免费一区二区夜夜嗨 | 国产精品国产一区| 久久久噜噜噜| 亚洲一区二区三区久久久| 日韩二区三区四区| 国产一区丝袜| 午夜久久一区| 国产图片一区| 亚洲一区资源| 久久不射中文字幕| 日韩激情中文字幕| 精品国产网站| 亚洲激情不卡| 久久精品72免费观看| 久久久久久色| 国产精品黑丝在线播放| 欧美日韩国产免费观看| 91成人小视频| 日韩免费视频| 在线亚洲观看| 久久99久久久精品欧美| 99久久亚洲精品蜜臀| 欧美专区18| 免费精品一区| 激情综合自拍| 国产精品自拍区| 精品中文字幕一区二区三区av| 日本在线成人| 日韩不卡在线| 91精品日本| 国产99亚洲| 欧美日本不卡高清| 婷婷精品进入| 欧美经典一区| 午夜精品一区二区三区国产| 日韩二区在线观看| 婷婷成人在线| 国产精东传媒成人av电影| 亚洲一区日韩| 四虎成人av| 91亚洲无吗| 欧美+亚洲+精品+三区| 国产精品17p| 喷白浆一区二区| 麻豆精品蜜桃| 国产精品大片免费观看| 免费欧美日韩|