XMLReader::open

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

XMLReader::open设置包含要解析的 XML 的 URI

说明

public static XMLReader::open(string $uri, ?string $encoding = null, int $flags = 0): XMLReader
public XMLReader::open(string $uri, ?string $encoding = null, int $flags = 0): bool

设置包含要解析的 XML 文档的 URI。

参数

uri

指向文档的 URI。

encoding

文档编码或 null

flags

LIBXML_* 常量的位掩码。

返回值

成功时返回 true,失败时返回 false。如果以静态方式调用,则返回 XMLReaderfalse 表示失败。

错误/异常

此方法可以以静态方式调用,但在 PHP 8.0.0 之前,在这种情况下会发出 E_DEPRECATED 错误。

变更日志

版本 说明
8.0.0 XMLReader::open() 现在声明为静态方法,但仍可以在 XMLReader 实例上调用。

参见

添加注释

用户贡献的注释 5 个注释

10
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');

?>
9
dave at sophoservices dot com
7 年前
使用 XmlReader 读取本地 XML 文件时,请记住 open 函数请求 URI。在 XML 的完整路径前面添加 'file://'。否则,您可能会得到

PHP 警告:XMLReader::open(): 无法打开... 中的源数据
3
alvaro at demogracia dot com
9 年前
XML 可以选择声明自己的编码

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

您可以使用 $encoding 参数提供此信息(如果缺少)或覆盖它(如果错误)。

输出始终为 UTF-8(这就是 libxml 的工作方式)。
0
crungmungus at gmail dot com
15 年前
Windows 用户请记住,如果您想使用 HTTPS URL 使用此函数(和其他函数),请在您的 php.ini 中启用 php_openssl.dll。
-3
mood(_a_)twolate.com
7 年前
由于某种原因,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