2024 年日本 PHP 研討會

XMLReader::open

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

XMLReader::open設定包含要解析之 XML 的 URI

說明

public static XMLReader::open(字串 $uri, ?字串 $encoding = null, 整數 $flags = 0): XMLReader
公開 XMLReader::open(字串 $uri, ?字串 $encoding = null, 整數 $flags = 0): 布林

設定要解析的 XML 文件的 URI。

參數

uri

指向文件的 URI。

encoding

文件編碼或 null

flags

LIBXML_* 常數的位元遮罩。

返回值

成功時返回 true,失敗時返回 false。如果以靜態方式呼叫,則返回 XMLReader 或失敗時返回 false

錯誤/例外

  • 傳遞無效的 encoding 會拋出 ValueError
  • 此方法可以靜態呼叫,但在 PHP 8.0.0 之前,在此情況下會發出 E_DEPRECATED 錯誤。

更新日誌

版本 說明
8.4.0 傳遞無效的 encoding 現在會拋出 ValueError
8.0.0 XMLReader::open() 現在宣告為靜態方法,但仍然可以在 XMLReader 實例上呼叫。

參見

新增註釋

使用者貢獻的註釋 5 則註釋

den at nurfuerspam dot de
7 年前
如果您想使用 POST 請求從 HTTP 讀取 XML,您可以使用 libxml_set_streams_context。
範例

<?php

$param
= array('http' => array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query(array(
'post_param1' => 'value1',
'post_param2' => 'value2',
)),
));
libxml_set_streams_context(stream_context_create($param));
$reader = XMLReader::open('https://example.com/get.php?get_param=value3');

?>
dave at sophoservices dot com
8 年前
使用 XmlReader 讀取本地 XML 檔案時,請記住 open 函式需要一個 URI。在 XML 的完整路徑前面加上 'file://'。否則你可能會得到

PHP 警告:XMLReader::open():無法開啟來源資料 於 ...
alvaro at demogracia dot com
10 年前
XML 可以選擇性地宣告自己的編碼

<?xml version="1.0" encoding="UTF-8"?>

您可以使用 $encoding 參數來提供此資訊(如果缺少)或覆蓋它(如果錯誤)。

輸出始終是 UTF-8(這就是 libxml 的工作方式)。
crungmungus at gmail dot com
16 年前
Windows 使用者如果想要使用 HTTPS URL 使用此函式(和其他函式),請記住在 php.ini 中啟用 php_openssl.dll。
mood(_a_)twolate.com
8 年前
由於某些原因,open() 方法一直拋出這個錯誤

PHP 警告:XMLReader::open():無法開啟來源資料 於 /var/www/nota/ethamap/fat_xml.php

這沒有道理,因為託管在我的伺服器上的 xml 檔案目標完全可以訪問。在呼叫 open() 之前加入這一行修復了它

libxml_disable_entity_loader(false);

請查看 https://bugs.php.net/bug.php?id=62577
它多少有點關係。
To Top