Hızlıca XML Okumak

saintx

webmaster.tc
Üye
Katılım
24 Ağu 2012
Mesajlar
112
Konum
Akhisar
XML Dosyamızı hızlıca okur associative diziye çevirerek bize döndürür.

Sınıfımız;
PHP:
<?php
	class FastXML
	{
		public function __construct($xml_file, $file_mode=true)
		{
			if($file_mode)
			{
				$xml      = self::_curl($xml_file);
				$handle  = fopen(md5($xml_file).'.xml', 'w+');
				fwrite($handle, $xml);
				fclose($handle);
				$xmlf     = new XMLReader;
				$xmlf->open(md5($xml_file).'.xml');
				$xml      = self::_read($xmlf);
				$xmlf->close();
				return $xml;
			}
			else
			{
				$xmlf    = new XMLReader;
				$xmlf->open($xml_file);
				$xml     = self::_read($xmlf);
				$xmlf->close();
				return $xml;
			}
		}
		private function _read()
		{
			$tree = null;
			while($xml->read())
			{
				switch ($xml->nodeType)
				{
					case XMLReader::END_ELEMENT: return $tree;
					case XMLReader::ELEMENT:
						$node = array('tag' => $xml->name, 'value' => $xml->isEmptyElement ? '' : $this->fast_xml($xml));
						if($xml->hasAttributes) 
						{
							while($xml->moveToNextAttribute())
							{
								$node['attributes'][$xml->name] = $xml->value;
							}
						}
						$tree[] = $node;
					break;
					case XMLReader::TEXT:
					case XMLReader::CDATA:
						$tree .= $xml->value;
					break;
				}
			}
			return $tree;
		}
		private function _curl($url)
		{
			$cURL = curl_init();
			$header = array();
			$header[0] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
			$header[1] = 'Cache-Control: max-age=0';
			$header[2] = 'Connection: keep-alive';
			$header[3] = 'Keep-Alive: 300';
			$header[4] = 'Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.7';
			$header[5] = 'Accept-Language: en-us,en;q=0.5';
			$header[6] = 'Pragma: ';
			curl_setopt($cURL, CURLOPT_URL, $url);
			curl_setopt($cURL, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
			curl_setopt($cURL, CURLOPT_HTTPHEADER, $header);
			curl_setopt($cURL, CURLOPT_HEADER, false);
			curl_setopt($cURL, CURLOPT_REFERER, 'http://www.google.com.tr/');
			curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
			curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($cURL, CURLOPT_ENCODING, 'gzip,deflate');
			curl_setopt($cURL, CURLOPT_AUTOREFERER, true);
			curl_setopt($cURL, CURLOPT_TIMEOUT, 30);
			curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
			$cURL_exec = curl_exec($cURL);
			curl_close($cURL);
			return $cURL_exec;
		}
	}
?>
Kullanımı (Uzak sunucudaki XML dosyayı okumak);
PHP:
<?php
	/*
	 *
	 *  Sınıfı çalıştırdığımız gibi çağırdığımız değişkene xml'i okuyup aktarır.
	 *
	 */
	$xml  = new FastXML('http://www.teknobeyin.com/sitemap.xml');
	print_r($xml);
?>
Local konumdaki XML Dosyayı okumak
PHP:
<?php
	$xml  = new FastXML('urladreslerim.xml', false);
	print_r($xml);
?>
iyi kullanımlar sorun oluşursa lütfen bildiriniz. :)
 

inforesim

webmaster.tc
Üye
Katılım
4 Ağu 2012
Mesajlar
2,401
Paylaşım için Teşekkürler :)
 

bykolcuoglu

webmaster.tc
Üye
Katılım
8 Ağu 2012
Mesajlar
141
Gerçekten yararlı bir paylaşım :) Saol hocam.
 

Üst