PHP的XML模式详解
研究与 php(做为现在的主流开发语言) 5 捆绑在一起的 xml(标准化越来越近了)Reader 库,它使 php(做为现在的主流开发语言) 页面能够以高效的流模式来处理 xml(标准化越来越近了) 文档。
php(做为现在的主流开发语言) 5 引入了新的类 xml(标准化越来越近了)Reader,用于读取可扩展标记语言(Extensible Markup Language,xml(标准化越来越近了))。与 Simplexml(标准化越来越近了) 或文档对象模型(Document Object Model,DOM)不同,xml(标准化越来越近了)Reader 以流模式进行操作。即它从头到尾读取文档。在文档后面的内容编译完成之前,可以先处理已编译好的文档前面的内容,从而实现非常快速、非常高效、非常节省地使用内存。需要处理的文档越大,这个特点就越发重要。
libxml(标准化越来越近了)
这里所说的 xml(标准化越来越近了)Reader API 位于 Gnome Project 中用于 C 和 C++ 的 libxml(标准化越来越近了) 库之上。实际上 xml(标准化越来越近了)Reader 只是在 libxml(标准化越来越近了) 的 xml(标准化越来越近了)TextReader API 之上的很薄的 php(做为现在的主流开发语言) 层。xml(标准化越来越近了)TextReader 本身是模仿 .NET 的 xml(标准化越来越近了)TextReader 类和 xml(标准化越来越近了)Reader 类,尽管并不具有与这些类相似的代码。
与 Simple API for xml(标准化越来越近了) (SAX) 不同,xml(标准化越来越近了)Reader 是推解析器,而不是拉解析器。这意味着程序是可以控制的。您将告诉解析器何时获取下一个文档片段,而不是在解析器看到文档后告诉您所看到的内容。您将请求内容,而不是对内容进行反应。从另一个角度来考虑这个问题:xml(标准化越来越近了)Reader 是 Iterator 设计模式的实现,而不是 Observer 设计模式的实现。
示例问题
先从简单例子开始讨论。假定正在编写 php(做为现在的主流开发语言) 脚本,用来接收 xml(标准化越来越近了)-RPC 请求并生成响应。更具体一些,假定请求如清单 1 所示。文档的根元素是 methodCall,它包含 methodName 元素和 params 元素。方法的名称是 sqrt.params 元素包含一个 param 元素,param 元素包含 double,double 的平方根是希望得到的值。没有使用名称空间。
清单 1. xml(标准化越来越近了)-RPC 请求
<b>以下是引用片段:<br></b><?xml <font class=reblank>(标准化越来越近了) version="1.0"?> <br><methodcall> <br> <methodname>sqrt</methodname> <br> <params> <br> <param> <br> <value><double>36.0</double></value> <br> <br> </params> <br></methodcall> 登入後複製 |
下面是 php(做为现在的主流开发语言) 脚本需要完成的工作:
1、检查方法名,如果不是 sqrt(它是该脚本懂得如何处理的惟一方法),则生成错误响应。
2、找到参数,如果参数不存在或参数类型错误,则生成错误响应。
3、另外,计算平方根。
4、在表单中返回结果,如清单 2 所示。
清单 2. xml(标准化越来越近了)-RPC 响应
<b>以下是引用片段:<br></b><?xml <font class=reblank>(标准化越来越近了) version="1.0"?> <br><methodresponse> <br> <params> <br> <param> <br> <value><double>6.0</double></value> <br> <br> </params> <br></methodresponse> 登入後複製 |
下面我们逐步展开说明。
初始化解析器并载入文档
第一步是创建新的解析器对象。创建操作很简单:
<b>以下是引用片段:<br></b>$reader = new xml<font class="reblank">(标准化越来越近了)</font>Reader(); 登入後複製 |
接着,需要为它提供一些用于解析的数据。对于 xml(标准化越来越近了)-RPC,这是超文本传输协议(Hypertext Transfer Protocol,HTTP)请求的原始主体。然后可以将该字符串传递到读取器的 xml(标准化越来越近了)() 函数:
填充原始发送数据
<b>以下是引用片段:<br></b> $request = $HTTP_RAW_POST_DATA; <br> $reader->xml<font class="reblank">(标准化越来越近了)</font>($request); 登入後複製 |
如果发现 $HTTP_RAW_POST_DATA 是空的,则将以下代码行添加到 php(做为现在的主流开发语言).ini 文件:
<b>以下是引用片段:<br></b> always_populate_raw_post_data = On 登入後複製 |
可以解析任何字符串,无论它是从何处获取的。例如,可以是程序中的一串文字或从本地文件读取。还可以使用 open() 函数从外部 URL 载入数据。例如,下面的语句准备解析其中一个 Atom 提要:
<b>以下是引用片段:<br></b> $reader->xml<font class="reblank">(标准化越来越近了)</font>('http://www.cafeaulait.org/today.atom'); 登入後複製 |
无论是从何处获取原始数据,现在已建立了阅读器并为解析做好准备。
读取文档
read() 函数使解析器前进到下一个标记。最简单的方法是在 while 循环中遍历整个文档:
<b>以下是引用片段:<br></b> while ($reader->read()) { <br> // processing code goes here... <br> } 登入後複製 |
完成遍历后,关闭解析器以释放它所持有的任何资源,并且重置解析器以便用于下一个文档:
<b>以下是引用片段:<br></b> $reader->close(); 登入後複製 |
在循环内部,将解析器放置在特殊节点上:元素的起点、元素的终点、文本节点、注释等等。通过检查以下属性,可以发现解析器正在查看的内容:
localName 是本地的、未带前缀的节点名。
name 是可能的节点前缀名。对于像注释这种没有名称的节点,包括 #comment、#text、#document 等等,与 DOM 中的一样。
namespaceURI 是节点名称空间的统一资源标识符(Uniform Resource Identifier,URI)。
nodeType 是代表节点类型的整数 —— 例如,2 代表属性节点,7 代表处理指令。
prefix 是节点的名称空间前缀。
value 是节点的下一个文本内容。
如果节点有文本值,hasValue 值为 true;否则,值为 false.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

AdobeAcrobatReader是一款用於檢視和編輯PDF檔案的功能強大的工具。軟體提供免費和付費兩個版本。如果您需要使用AdobeAcrobatReader進行PDF檔案的編輯,那麼您需要購買其付費方案。為了保持AdobeAcrobatReader與最新的增強功能和安全性修復程式同步,軟體預設會啟用自動更新功能。不過,如果您希望,您也可以選擇停用自動更新。本文將向您介紹如何在AdobeAcrobatReader中停用自動更新。如何在AdobeAcrobatReader中停用自動更新我們

「你的組織要求你更改PIN訊息」將顯示在登入畫面上。當在使用基於組織的帳戶設定的電腦上達到PIN過期限制時,就會發生這種情況,在該電腦上,他們可以控制個人設備。但是,如果您使用個人帳戶設定了Windows,則理想情況下不應顯示錯誤訊息。雖然情況並非總是如此。大多數遇到錯誤的使用者使用個人帳戶報告。為什麼我的組織要求我在Windows11上更改我的PIN?可能是您的帳戶與組織相關聯,您的主要方法應該是驗證這一點。聯絡網域管理員會有所幫助!此外,配置錯誤的本機原則設定或不正確的登錄項目也可能導致錯誤。即

Windows11將清新優雅的設計帶到了最前沿;現代介面可讓您個性化和更改最精細的細節,例如視窗邊框。在本指南中,我們將討論逐步說明,以協助您在Windows作業系統中建立反映您的風格的環境。如何更改視窗邊框設定?按+開啟“設定”應用程式。 WindowsI前往個人化,然後按一下顏色設定。顏色變更視窗邊框設定視窗11「寬度=」643「高度=」500「>找到在標題列和視窗邊框上顯示強調色選項,然後切換它旁邊的開關。若要在「開始」功能表和工作列上顯示主題色,請開啟「在開始」功能表和工作列上顯示主題

預設情況下,Windows11上的標題列顏色取決於您選擇的深色/淺色主題。但是,您可以將其變更為所需的任何顏色。在本指南中,我們將討論三種方法的逐步說明,以更改它並個性化您的桌面體驗,使其具有視覺吸引力。是否可以更改活動和非活動視窗的標題列顏色?是的,您可以使用「設定」套用變更活動視窗的標題列顏色,也可以使用登錄編輯程式變更非活動視窗的標題列顏色。若要了解這些步驟,請前往下一部分。如何在Windows11中變更標題列的顏色? 1.使用「設定」應用程式按+開啟設定視窗。 WindowsI前往“個人化”,然

工作列縮圖可能很有趣,但它們也可能分散注意力或煩人。考慮到您將滑鼠懸停在該區域的頻率,您可能無意中關閉了重要視窗幾次。另一個缺點是它使用更多的系統資源,因此,如果您一直在尋找一種提高資源效率的方法,我們將向您展示如何停用它。不過,如果您的硬體規格可以處理它並且您喜歡預覽版,則可以啟用它。如何在Windows11中啟用工作列縮圖預覽? 1.使用「設定」應用程式點擊鍵並點選設定。 Windows按一下系統,然後選擇關於。點選高級系統設定。導航至“進階”選項卡,然後選擇“效能”下的“設定”。在「視覺效果」選

在Windows11上的顯示縮放方面,我們都有不同的偏好。有些人喜歡大圖標,有些人喜歡小圖標。但是,我們都同意擁有正確的縮放比例很重要。字體縮放不良或圖像過度縮放可能是工作時真正的生產力殺手,因此您需要知道如何自訂以充分利用系統功能。自訂縮放的優點:對於難以閱讀螢幕上的文字的人來說,這是一個有用的功能。它可以幫助您一次在螢幕上查看更多內容。您可以建立僅適用於某些監視器和應用程式的自訂擴充功能設定檔。可以幫助提高低階硬體的效能。它使您可以更好地控制螢幕上的內容。如何在Windows11

螢幕亮度是使用現代計算設備不可或缺的一部分,尤其是當您長時間注視螢幕時。它可以幫助您減輕眼睛疲勞,提高易讀性,並輕鬆有效地查看內容。但是,根據您的設置,有時很難管理亮度,尤其是在具有新UI更改的Windows11上。如果您在調整亮度時遇到問題,以下是在Windows11上管理亮度的所有方法。如何在Windows11上變更亮度[10種方式解釋]單一顯示器使用者可以使用下列方法在Windows11上調整亮度。這包括使用單一顯示器的桌上型電腦系統以及筆記型電腦。讓我們開始吧。方法1:使用操作中心操作中心是訪問

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安
