XMLReader::open()
(PHP 5 >= 5.1.0, PHP 7)
Set the URI containing the XML to parse
说明
public XMLReader::open(string $URI[,string $encoding[,int $options= 0]]): bool
Set the URI containing the XML document to be parsed.
参数
- $URI
URI pointing to the document.
- $encoding
The document encoding or
NULL
.- $options
A bitmask of the LIBXML_* constants.
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。 If called statically, returns an XMLReader或者在失败时返回FALSE
.
错误/异常
此方法可以被静态调用,但会抛出一个E_STRICT
错误。
更新日志
版本 | 说明 |
---|---|
5.2.0 | $encodingand$optionswere added. |
参见
- XMLReader::xml() Set the data containing the XML to parse
- XMLReader::close() Close the XMLReader input
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'); ?>
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 ...
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).
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.
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.