PHP Conference Nagoya 2025

XMLReader::open

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

XMLReader::openURI angeben, die auf XML-Inhalt verweist, der geparst werden soll

Beschreibung

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

URI angeben, die auf XML-Inhalt verweist, der geparst werden soll.

Parameter-Liste

uri

URI, die auf den XML-Inhalt verweist.

encoding

Dokumentkodierung oder null.

flags

Bitmaske bestehend aus LIBXML_*-Konstanten.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben. Wenn die Methode statisch aufgerufen wird, wird eine XMLReader-Instanz zurückgegeben oder im Fehlerfall false.

Fehler/Exceptions

Diese Methode kann statisch aufgerufen werden, gibt aber in diesem Fall vor PHP 8.0.0 einen E_DEPRECATED-Fehler aus.

Changelog

Version Beschreibung
8.0.0 XMLReader::open() ist jetzt als statische Methode deklariert, kann aber weiterhin auf einer XMLReader-Instanz aufgerufen werden.

Siehe auch

add a note

User Contributed Notes 5 notes

up
10
den at nurfuerspam dot de
7 years ago
If you like to read the XML from HTTP whit a POST request, you can use libxml_set_streams_context.
Example:

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

?>
up
9
dave at sophoservices dot com
8 years ago
When using the XmlReader to read local XML files, remember it the open function requests a URI. Add 'file://' to the front of the FULL path to the XML. Otherwise you may get:

PHP Warning: XMLReader::open(): Unable to open source data in ...
up
3
alvaro at demogracia dot com
10 years ago
XML can optionally declare its own encoding:

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

You can use the $encoding parameter to provide this information (if missing) or override it (if wrong).

Output is always UTF-8 (that's how libxml works).
up
0
crungmungus at gmail dot com
16 years ago
Windows users remember to enable php_openssl.dll in your php.ini if you want to be able to use this function (and others) with a HTTPS URL.
up
-3
mood(_a_)twolate.com
8 years ago
For some reasons, the open() method keep throwing me this error :

PHP Warning: XMLReader::open(): Unable to open source data in /var/www/nota/ethamap/fat_xml.php

It doesn't make sense as the xml file target hosted on my server is perfectly reachable. Adding this line before invoking open() fixed it :

libxml_disable_entity_loader(false);

Please view https://bugs.php.net/bug.php?id=62577
It is somehow related.
To Top