Using PHP we can read, write files. we can also upload and create new files.
But what if you have to read a XML file which is present in an ZIP Archive.
The following function shows how to read data of XML file from an ZIP Archive.
function readZippedXML($archiveFile, $dataFile) {
// Create new ZIP archive
$zip = new ZipArchive;
// Open received archive file
if (true === $zip->open($archiveFile)) {
// If done, search for the data file in the archive
if (($index = $zip->locateName($dataFile)) !== false) {
// If found, read it to the string
$data = $zip->getFromIndex($index);
// Close archive file
$zip->close();
// Load XML from a string
// Skip errors and warnings
$xml = DOMDocument::loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
// Return data without XML formatting tags
return strip_tags($xml->saveXML());
}
$zip->close();
}
// In case of failure return empty string
return "";
}
The usage of the function is as follows:
readZippedXML("word/document.zip", "word/document.xml");
This function will get all the data of the XML file from the zip and save in a new file where the zip is present.
But what if you have to read a XML file which is present in an ZIP Archive.
The following function shows how to read data of XML file from an ZIP Archive.
function readZippedXML($archiveFile, $dataFile) {
// Create new ZIP archive
$zip = new ZipArchive;
// Open received archive file
if (true === $zip->open($archiveFile)) {
// If done, search for the data file in the archive
if (($index = $zip->locateName($dataFile)) !== false) {
// If found, read it to the string
$data = $zip->getFromIndex($index);
// Close archive file
$zip->close();
// Load XML from a string
// Skip errors and warnings
$xml = DOMDocument::loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
// Return data without XML formatting tags
return strip_tags($xml->saveXML());
}
$zip->close();
}
// In case of failure return empty string
return "";
}
The usage of the function is as follows:
readZippedXML("word/document.zip", "word/document.xml");
This function will get all the data of the XML file from the zip and save in a new file where the zip is present.
No comments:
Post a Comment