儘管使用了 PHP DOM 函數很長一段時間,但原始發文者 (OP) 表示很難理解其功能。他們提供了一個XML 範例並描述了他們遇到的兩個特定問題:
OP 使用setIdAttribute 函數為頁面元素設定ID,以防止載入時重複到樹裡。然而,他們在嘗試使用 getElementById 檢索這些 ID 時遇到了挑戰。
解:
要解決此問題,建議 OP 使用 xml:id 屬性而不是傳統的 id 屬性。這種方法不需要 DTD 或 Schema,並且允許 DOM 無需驗證即可識別 ID 屬性。
為了最小化載入的數據,OP 最初創建了 ID 屬性在頁面上。然而,由於 getElementById 的限制,他們改用 XPath 來檢索必要的資訊。
解決方案:
而不是依賴getElementById,他們聲稱這樣做無法在其平台上正常工作,OP 可以利用XPath 來查詢特定頁面及其子元素的XML。該解決方案提供了一種更有效率、更通用的方法來檢索所需資料。
示例:
使用XPath 檢索ID 為“1”的特定頁面的所有產品:
<code class="php">$xpath->query('/pages/page[@id="1"]/products');</code>
為了回覆評論,OP 提供了更詳細的解釋:
使用XML:ID 屬性:
使用xml:id 屬性設定ID 屬性時,DOM 實例無需DTD 或Schema 即可識別它。這是由 W3C 定義的,獨立於平台或 libxml 版本工作。
非命名空間 ID 屬性的限制:
如果在沒有 xml 的情況下設定 ID 屬性:id 命名空間,DOM 會將其視為常規屬性。若要將其識別為 ID 屬性,必須指定 DTD 或架構,並且必須根據它驗證 XML。
XPath 仍然是查詢 XML 文件的通用且可靠的方法,尤其是在涉及 ID 屬性時。它消除了對 getElementById 的依賴,並提供了根據各種條件檢索特定元素的靈活性。
以上是如何掌握 PHP DOM XML 解析:簡化 ID 管理與頁面載入的詳細內容。更多資訊請關注PHP中文網其他相關文章!