Choosing input
Selecting the input for XML_Parser
XML_Parser is able to parse from several inputs:
-
filesystem or anything that can be accessed via stream
-
strings
-
resources
You will have to set the input using setInputFile(), setInputString() or setInput() and then call parse() to start the XML processing.
Parsing from a file
To parse from a file or URL, you'll have to set the name or URI using XML_Parser::setInputFile(). You may not only use files located on the filesystem, but any location that can be opened using fopen(). You may combine this functionality with the stream functions or PEAR's Streams packages to parse documents from shared memory, databases or anything else.
You may also use any of PHP's built-in wrappers to open HTTP or FTP locations as well as STDIN.
Parsing from a string
To parse an XML string, pass the string to XML_Parser (or your subclass of XML_Parser) using XML_Parser::setInputString(). A big advantage of SAX-based parsing is that the parser does not have to read the whole XML document to process it. If you are parsing very large documents, you should aboid setInputString() and use setInput() or setInputFile() instead.
Parsing from any resource
There's a third, but seldomly used way to specify XML_Parser's input. XML_Parser allows you to pass a PHP resource, like a file pointer that has been returned by fopen(). This can be useful, if you are generating the document on-the-fly and already opened it before. Instead of closing the file and passing its name to XML_Parser, you may simply use XML_Parser::setInput() to pass the resource. Make sure that the file pointer is at the correct location in your file using fseek().