• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • XMLReader::open()

    (PHP 5 >= 5.1.0, PHP 7)

    Set the URI containing the XML to parse

    说明

    publicXMLReader::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.