Öncelikle sevgiler
Ufak bir Php script yazmıştım geçen gün yeni pack hazırlarken xml leri tek tek yazmak hem uğraştırıcı hemde hata yapma payının var olduğunu düşünürsek
bunun için yazdığım ufak scripti biraz düzenledim açıklama ve css girdim kullanırken zorluk çekmeyin diye
kaynak kodu aşağıdaki gibidir
Sevgilerle Seyhan YILDIZ
Dizinden XML'e Dönüşüm
Ufak bir Php script yazmıştım geçen gün yeni pack hazırlarken xml leri tek tek yazmak hem uğraştırıcı hemde hata yapma payının var olduğunu düşünürsek
bunun için yazdığım ufak scripti biraz düzenledim açıklama ve css girdim kullanırken zorluk çekmeyin diye
kaynak kodu aşağıdaki gibidir
Kod:
<?php /* a Script by Seyhan YILDIZ açıklamamızıda yapalım wwww.seyhanyildiz.com.tr || www.m2mad.de ingilizce açıklamaları yabancı arkadaşlar için koydum */ $sanaldizin="icon/item/"; /*Virtual directory for metin2 */ $dizin_adi = "D:\GFO\Black\NesilKraliyeti\ArmaturePC\sura\\"; /* Packed batch */ $paket_adi = "yeniPack"; /*eix epk name*/ //Batch tan Virtuala dönüştürme.. function cevir($veri){ return str_replace('\\','/',$veri); } // bağla listele cart curt.. print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Directory to XML with PHP || SY</title> <style type="text/css"> body,td,th { color: #333; } body,html { background-color: #eee; margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; width:99.9%; height:99.9% } .textcik { width:99.5%; height:99.5%; background-color:#CCC; color: #222; text-shadow: 0px 2px 3px #eee; } </style> </head> <body> <textarea class="textcik"><Buildfile version="1.1"> <Action type="create" output="'.$paket_adi.'"> '; $dizin = opendir ($dizin_adi); while ( gettype ( $bilgi = readdir( $dizin ) ) != boolean ) { if($bilgi=='.' or $bilgi=='..'){ //pişst.. || dont display } else { if ( is_dir( "$dizin_adi/$bilgi" ) ) { //dizin işlemi ( dizin altı) || under directory $dizin2 = opendir ($dizin_adi.$bilgi); while ( gettype ( $bilgi2 = readdir( $dizin2 ) ) != boolean ) { if($bilgi2=='.' or $bilgi2=='..'){ //pişst.. || dont display } else { if ( is_dir( "$dizin_adi/$bilgi/$bilgi2" ) ) { //daha fazla alt dizine gitmeye gerek yok script ufak olsun diye bu şekilde kodlandı fonksiyonun içinde fonksiyona alarak bellek tüketimini arttırmak istemedim bi alt dizine daha geçmek için üzeirnde düzenleme yapabilirsiniz } else { print ('<File archivedPath="'.$sanaldizin.cevir($bilgi.'/'.$bilgi2).'" type="1"><![CDATA['.$dizin_adi.$bilgi.'\\'.$bilgi2.']]></File>'."\n"); } } } closedir ($dizin2); } else { #RncDJVezJFVzxXezxXL3EjN=MsstWrsCn41KHt4OzbL8dDN8 print ('<File archivedPath="'.$sanaldizin.cevir($bilgi).'" type="1"><![CDATA['.$dizin_adi.$bilgi.']]></File>'."\n"); } } } closedir ($dizin); print '</Action> </Buildfile></textarea> </body> </html> '; ?>
Sevgilerle Seyhan YILDIZ
Dizinden XML'e Dönüşüm
PHP:
- Metin2 Client & Pack Geliştiriciler İçin[/B][BR][/BR][BR][/BR][COLOR=#54acd2]Metin2 Lobby[/COLOR] olarak, Metin2 geliştiricileri ve paket editörleri için özel içerikler sunmaya devam ediyoruz. Bu makalemizde, PHP kullanarak bir dizindeki dosya yapısını XML formatına dönüştürme sürecini ele alacağız. Özellikle [B]Metin2 client[/B] ve [B]Metin2 pack[/B] geliştiricileri için oldukça faydalı olabilecek bu yöntem, dosya listeleme, XML üretimi ve yapısal veri yönetimi konularında temel bir çözüm sunar.[BR][/BR][BR][/BR][B]PHP ile Dizin Yapısını XML'e Çevirmenin Amacı[/B][BR][/BR][BR][/BR]Metin2 client'ları veya pack'leri geliştirirken, dosya yapısını dış kaynaklarda saklamak, paylaşmak veya sistemsel kontrol sağlamak isteyebilirsiniz. Örneğin, bir [B]Metin2 client indir[/B] butonuyla birlikte gelen paketin dosya listesini XML olarak vermek, kurulum sırasında otomatik doğrulama yapılmasını sağlar. PHP sayesinde, belirtilen dizindeki tüm dosya ve klasörleri tarayıp, bunları XML formatında çıktı alabilirsiniz.[BR][/BR][BR][/BR][B]PHP Kodu ile Uygulama[/B][BR][/BR][BR][/BR]Aşağıdaki basit PHP fonksiyonu, belirtilen bir dizini tarar ve içeriğini XML formatında döndürür:[BR][/BR][BR][/BR][CODE][B]function directoryToXML($dirPath, &$xmlNode) {[/B][BR][/BR][B]$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath));[/B][BR][/BR][B]foreach ($iterator as $file) {[/B][BR][/BR][B]if (!$file->isDir()) {[/B][BR][/BR][B]$filePath = $file->getRealPath();[/B][BR][/BR][B]$relativePath = substr($filePath, strlen($dirPath) + 1);[/B][BR][/BR][B]$fileNode = $xmlNode->addChild('file', htmlspecialchars(basename($filePath)));[/B][BR][/BR][B]$fileNode->addAttribute('path', $relativePath);[/B][BR][/BR][B]$fileNode->addAttribute('size', $file->getSize());[/B][BR][/BR][B]$fileNode->addAttribute('modified', date('c', $file->getMTime()));[/B][BR][/BR][B]}[/B][BR][/BR][B]}[/B][BR][/BR][B]}[/B][/CODE][BR][/BR][BR][/BR][B]XML Formatında Çıktı[/B][BR][/BR][BR][/BR]Yukarıdaki kod çalıştırıldığında, örnek XML çıktısı şu şekilde olacaktır:[BR][/BR][BR][/BR][CODE][B]<files>[/B][BR][/BR][B]<file path='client.exe' size='1234567' modified='2025-04-05T10:00:00+00:00'>client.exe</file>[/B][BR][/BR][B]<file path='data/sound.mp3' size='54321' modified='2025-04-05T10:00:00+00:00'>sound.mp3</file>[/B][BR][/BR][B]</files>[/B][/CODE][BR][/BR][BR][/BR][B]Neden Bu Yöntem Kullanışlıdır?[/B][BR][/BR][BR][/BR]Özellikle [B]Metin2 pack extract[/B] veya [B]Metin2 client dosyaları[/B] üzerinde çalışan geliştiriciler için bu tür yapılar, dosya bütünlüğü kontrolü ve sürüm takibi gibi işlemleri kolaylaştırır. Ayrıca, bir [B]Metin2 client patch[/B] veya [B]Metin2 client update[/B] sürecinde, XML formatında tutulan dosya listesiyle mevcut yapı karşılaştırılabilir. Bu sayede eksik ya da fazla dosya tespiti hızlıca yapılabilir.[BR][/BR][BR][/BR][B]Geliştiriciye Özel Kullanımlar[/B][BR][/BR][BR][/BR]Ayrıca bu yöntemi, [B]Metin2 client edit[/B] süreçlerinde veya [B]Metin2 pack edit[/B] işlemlerinde de kullanabilirsiniz. Örneğin, bir [B]Metin2 eter pack[/B] dosyasının içeriğini XML'e çevirip, dosya listesini analiz ederek düzenleyebilirsiniz. Böylece, [B]Metin2 client kurulum[/B] aşamasında hangi dosyanın ne zaman değiştirildiğini takip edebilirsiniz.[BR][/BR][BR][/BR][B]Sonuç[/B][BR][/BR][BR][/BR]PHP ile dizin yapısını XML'e dönüştürmek, özellikle [B]Metin2 client[/B] ve [B]Metin2 pack[/B] geliştiricileri için oldukça kullanışlı bir yöntemdir. Hem dosya yönetimini kolaylaştırır hem de otomasyon süreçlerinde büyük avantaj sağlar. [COLOR=green]Bu tür teknik çözümler, Metin2 dünyasında daha verimli ve organize çalışmalar yapılmasına yardımcı olur.[/COLOR][BR][/BR][HR][BR][/BR][B]Converting Directory to XML [PHP] - For Metin2 Client & Pack Developers[/B][BR][/BR][BR][/BR][COLOR=#54acd2]Metin2 Lobby[/COLOR] continues providing special content for Metin2 developers and pack editors. In this article, we will examine the process of converting a directory structure into XML format using PHP. This method, which can be very useful especially for [B]Metin2 client[/B] and [B]Metin2 pack[/B] developers, offers a basic solution for file listing, XML generation, and structural data management.[BR][/BR][BR][/BR][B]The Purpose of Converting Directory Structure to XML with PHP[/B][BR][/BR][BR][/BR]While developing Metin2 clients or packs, you may want to store the file structure externally, share it, or perform systematic checks. For example, delivering the file list of a package via a [B]Metin2 client download[/B] button as XML allows automatic validation during installation. With PHP, you can scan all files and folders in a given directory and output them in XML format.[BR][/BR][BR][/BR][B]Implementation with PHP Code[/B][BR][/BR][BR][/BR]The following simple PHP function scans a given directory and outputs its contents in XML format:[BR][/BR][BR][/BR][CODE][B]function directoryToXML($dirPath, &$xmlNode) {[/B][BR][/BR][B]$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath));[/B][BR][/BR][B]foreach ($iterator as $file) {[/B][BR][/BR][B]if (!$file->isDir()) {[/B][BR][/BR][B]$filePath = $file->getRealPath();[/B][BR][/BR][B]$relativePath = substr($filePath, strlen($dirPath) + 1);[/B][BR][/BR][B]$fileNode = $xmlNode->addChild('file', htmlspecialchars(basename($filePath)));[/B][BR][/BR][B]$fileNode->addAttribute('path', $relativePath);[/B][BR][/BR][B]$fileNode->addAttribute('size', $file->getSize());[/B][BR][/BR][B]$fileNode->addAttribute('modified', date('c', $file->getMTime()));[/B][BR][/BR][B]}[/B][BR][/BR][B]}[/B][BR][/BR][B]}[/B][/CODE][BR][/BR][BR][/BR][B]Output in XML Format[/B][BR][/BR][BR][/BR]When the above code runs, the sample XML output will be as follows:[BR][/BR][BR][/BR][CODE][B]<files>[/B][BR][/BR][B]<file path='client.exe' size='1234567' modified='2025-04-05T10:00:00+00:00'>client.exe</file>[/B][BR][/BR][B]<file path='data/sound.mp3' size='54321' modified='2025-04-05T10:00:00+00:00'>sound.mp3</file>[/B][BR][/BR][B]</files>[/B][/CODE][BR][/BR][BR][/BR][B]Why Is This Method Useful?[/B][BR][/BR][BR][/BR]This approach particularly helps developers working on [B]Metin2 pack extract[/B] or [B]Metin2 client files[/B] by simplifying file integrity checks and version tracking processes. Additionally, during [B]Metin2 client patch[/B] or [B]Metin2 client update[/B] processes, the file list stored in XML format can be compared against the current structure. This enables quick detection of missing or extra files.[BR][/BR][BR][/BR][B]Custom Uses for Developers[/B][BR][/BR][BR][/BR]You can also use this method in [B]Metin2 client edit[/B] processes or [B]Metin2 pack edit[/B] operations. For example, you can convert the contents of a [B]Metin2 eter pack[/B] file into XML, analyze the file list, and make edits accordingly. Thus, during the [B]Metin2 client installation[/B] phase, you can track when each file was last modified.[BR][/BR][BR][/BR][B]Conclusion[/B][BR][/BR][BR][/BR]Converting directory structures to XML with PHP is a highly practical method for [B]Metin2 client[/B] and [B]Metin2 pack[/B] developers. It facilitates file management and provides significant advantages in automation processes. [COLOR=green]Such technical solutions assist in achieving more efficient and organized workflows within the Metin2 world.[/COLOR]
