电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP擴(kuò)展之XML操作(二)——XML解析器安裝及概述

瀏覽:40日期:2022-09-16 10:05:26
一、概述及安裝

XML(可擴(kuò)展標(biāo)記語言,eXtensible Markup Language) 是一種在互聯(lián)網(wǎng)上用于結(jié)構(gòu)化文檔交互的數(shù)據(jù)格式。 它是互聯(lián)網(wǎng)協(xié)會(huì)(W3C)定義的一個(gè)標(biāo)準(zhǔn)。與 XML 及其相關(guān)技術(shù)的信息可訪問http://www.w3.org/XML/。

此 PHP 擴(kuò)展實(shí)現(xiàn) 支持 James Clark 使用 PHP 編寫的?expat。 此工具包可解析(但不能驗(yàn)證) XML 文檔。它支持 PHP 所提供的 3 種字符編碼:?US-ASCII,?ISO-8859-1?和?UTF-8。 不支持?UTF-16。

此擴(kuò)展可?創(chuàng)建 XML 解析器?并為不同的 XML 事件定義?處理程序(handler)。 每個(gè) XML 解析器還存在少數(shù)可以調(diào)節(jié)的參數(shù)。

此擴(kuò)展需要?libxml?PHP 擴(kuò)展。這表示需要使用?--enable-libxml?,盡管這將隱式完成因?yàn)?libxml 是缺省開啟的。

缺省情況下,此擴(kuò)展使用expat compat layer?。也可使用expat, 此庫位于?http://www.jclark.com/xml/expat.html。 使用expat庫中的 Makefile 是不會(huì)默認(rèn)構(gòu)建出庫文件的,可使用以下構(gòu)建規(guī)則進(jìn)行構(gòu)建:

libexpat.a: $(OBJS) ar -rc $@ $(OBJS) ranlib $@

expat 的源代碼 RPM 安裝包可在?http://sourceforge.net/projects/expat/?找到。

此擴(kuò)展默認(rèn)為啟用,編譯時(shí)可通過下列選項(xiàng)禁用:?--disable-xml

這些函數(shù)默認(rèn)為有效的,使用了捆綁的 expat 庫。您可以通過參數(shù)?--disable-xml?來屏蔽 XML 的支持。如果您將 PHP 編譯為 Apache 1.3.9 或更高版本的一個(gè)模塊, PHP 將自動(dòng)使用 Apache 捆綁的?expat?庫。如果您不希望使用該捆綁的 expat 庫,請(qǐng)?jiān)谶\(yùn)行 PHP 的 configure 配置腳本時(shí)使用參數(shù)?--with-expat-dir=DIR?,其中 DIR 應(yīng)該指向 expat 安裝的根目錄。

PHP 的 Windows 版本已內(nèi)建對(duì)此擴(kuò)展的支持。不需要載入額外的擴(kuò)展來使用這些函數(shù)。

二、事件處理器

XML 事件處理器的定義如下:

被支持的 XML 處理器PHP 處理器函數(shù)事件描述xml_set_element_handler()當(dāng) XML 解析器遇到開始或結(jié)束標(biāo)簽時(shí),會(huì)觸發(fā)元素事件。 開始標(biāo)簽和結(jié)束標(biāo)簽有不同的處理器。xml_set_character_data_handler()字符數(shù)據(jù)范指 XML 文檔中所有非標(biāo)記的內(nèi)容,包括標(biāo)簽之間的空格。 注意,XML 解析器不會(huì)添加或刪除任何空格,由應(yīng)用程序(你)來判斷空格是否有意義。xml_set_processing_instruction_handler()PHP 程序員必須熟練掌握處理指令(PI)。<?php ?>是處理指令, 其中php被稱為“處理指令對(duì)象”。 除所有以“XML”開頭的處理指令對(duì)象是系統(tǒng)保留的外, 其他的處理函數(shù)均是由應(yīng)用程序指定的。xml_set_default_handler()不執(zhí)行其他處理函數(shù),則會(huì)執(zhí)行缺省的處理函數(shù)。 在缺省的處理函數(shù)中可取得如 XML 和文檔類型聲明等信息。xml_set_unparsed_entity_decl_handler()未解析的實(shí)體聲明(NDATA)會(huì)調(diào)用此處理函數(shù)。xml_set_notation_decl_handler()符號(hào)聲明會(huì)調(diào)用此處理函數(shù)xml_set_external_entity_ref_handler()當(dāng) XML 解析器發(fā)現(xiàn)對(duì)外部已解析的普通實(shí)體的引用時(shí), 會(huì)調(diào)用此處理函數(shù)。例如,引用一個(gè)文件或URL。實(shí)例可參見?XML 外部實(shí)體例程。三、大寫轉(zhuǎn)換

元素處理函數(shù)可取得元素名稱轉(zhuǎn)換為?case-folded(大寫字母)形式。 Case-folding 被定義為“將非大寫字母替換為相對(duì)應(yīng)的大寫字母的字符串操作”。換句話說,在 XML 中,case-folding 就是轉(zhuǎn)換為大寫。

默認(rèn)情況下,所有的通過處理函數(shù)的元素名都被轉(zhuǎn)換為大寫字母。每個(gè) XML 解析器可分別通過?xml_parser_get_option()與xml_parser_set_option()函數(shù)來查詢與控制此項(xiàng)功能。

四、錯(cuò)誤代碼

下列常量是 XML 相關(guān)的錯(cuò)誤代碼(?xml_parse()函數(shù)的返回值):

XML_ERROR_NONEXML_ERROR_NO_MEMORYXML_ERROR_SYNTAXXML_ERROR_NO_ELEMENTSXML_ERROR_INVALID_TOKENXML_ERROR_UNCLOSED_TOKENXML_ERROR_PARTIAL_CHARXML_ERROR_TAG_MISMATCHXML_ERROR_DUPLICATE_ATTRIBUTEXML_ERROR_JUNK_AFTER_DOC_ELEMENTXML_ERROR_PARAM_ENTITY_REFXML_ERROR_UNDEFINED_ENTITYXML_ERROR_RECURSIVE_ENTITY_REFXML_ERROR_ASYNC_ENTITYXML_ERROR_BAD_CHAR_REFXML_ERROR_BINARY_ENTITY_REFXML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REFXML_ERROR_MISPLACED_XML_PIXML_ERROR_UNKNOWN_ENCODINGXML_ERROR_INCORRECT_ENCODINGXML_ERROR_UNCLOSED_CDATA_SECTIONXML_ERROR_EXTERNAL_ENTITY_HANDLING五、字符編碼

PHP 的 XML 擴(kuò)展通過幾種不同的字符編碼支持Unicode?字符集。 有兩類字符編碼,?原始編碼?和?目標(biāo)編碼. 在PHP的內(nèi)部展現(xiàn)中,文檔始終是使用UTF-8編碼。

當(dāng) XML 被?解析?后,原始編碼就完成了。 在創(chuàng)建 XML 解析器時(shí), 可以指定原始編碼(在XML 解析器此后的生命周期里,不能修改此編碼)。 被支持的原始編碼有?ISO-8859-1,?US-ASCII?和?UTF-8. 前兩種是單字節(jié)編碼, 即每一個(gè)字符表現(xiàn)為一個(gè)字節(jié)。?UTF-8?可將字符編碼為一串不定數(shù)量(最高21)的位(bit), 排列成1到4個(gè)字節(jié)。 PHP 中使用的默認(rèn)原始編碼是ISO-8859-1.

當(dāng) PHP 將數(shù)據(jù)傳給 XML 處理函數(shù)時(shí),目標(biāo)編碼就完成了。 在創(chuàng)建 XML 處理器時(shí),目標(biāo)編碼被設(shè)定為與原始編碼相同,但可任意修改。 目標(biāo)編碼會(huì)影響字符數(shù)據(jù)及標(biāo)簽名,與處理指令目標(biāo)。

如 XML 解析器遇到原始編碼所能表示的范圍之外的字符時(shí),會(huì)返回一個(gè)錯(cuò)誤。

如 PHP 遇到在被解析的 XML 文檔中不能用所指定的目標(biāo)編碼表示的字符時(shí), 這個(gè)問題字符會(huì)被“降級(jí)”。通常來說,就是那些字符會(huì)被替換成問號(hào)(?)。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 纳米涂料品牌 防雾抗污纳米陶瓷涂料厂家_虹瓷科技 | 无线对讲-无线对讲系统解决方案-重庆畅博通信| 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 慈溪麦田广告公司,提供慈溪广告设计。 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 陕西高职单招-陕西高职分类考试网 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 干式磁选机_湿式磁选机_粉体除铁器-潍坊国铭矿山设备有限公司 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 |