Xml tartalom sorbarendezése

Xml tartalom sorbarendezése
2009-06-08T23:28:19+02:00
2009-06-09T19:04:52+02:00
2022-11-13T22:15:38+01:00
Sztatty
Helló! Van egy ilyen xml generáló scriptem, ami egy mappa tartalmát kiolvassa és elmenti egy xml file-ba.
A gond ezzel, hogy nem sorba rendezve pakolja be az adatokat. Hogy lehetne ezt megoldani?

<?php $path_to_image_dir = "xmlnek/"; $xml_string = <<<XML <?xml version="1.0" encoding="UTF-8"?> <data> </data> XML; $xml_generator = new SimpleXMLElement($xml_string); if ( $handle = opendir( $path_to_image_dir ) ) { while (false !== ($file = readdir($handle))) { if ( is_file($path_to_image_dir.'/'.$file) ) { $title = $xml_generator->addChild('title'); $title->addChild('file', $file); } } closedir($handle); } $xmlFile = "behiv2.xml"; $xmlHandle = fopen($xmlFile, "w"); header("Content-Type: text/xml"); $xmlString = $xml_generator->asXML(); echo($xmlString); fwrite($xmlHandle, $xmlString); fclose($xmlHandle); ?>
Mutasd a teljes hozzászólást!
Jah most látom, elrontottam a filenevek tömbbe írását, de frankadavid-nál jól van! (viszont ő elírta a $title->addChild('file',$db ); sorát )

1:1


Javítva:

<?php $path_to_image_dir = "xmlnek/"; $xml_string = <<<XML <?xml version="1.0" encoding="UTF-8"?> <data> </data> XML; $xml_generator = new SimpleXMLElement($xml_string); $fajlok = array(); if ( $handle = opendir( $path_to_image_dir ) ) { while (false !== ($file = readdir($handle))) { if ( is_file($path_to_image_dir.'/'.$file) ) { $fajlok[]=$file; } } natsort($fajlok); //használhatod a sort() fgv-t is! foreach($fajlok as $db) { $title = $xml_generator->addChild('title'); $title->addChild('file', $db); } closedir($handle); } $xmlFile = "behiv2.xml"; $xmlHandle = fopen($xmlFile, "w"); header("Content-Type: text/xml"); $xmlString = $xml_generator->asXML(); echo($xmlString); fwrite($xmlHandle, $xmlString); fclose($xmlHandle); ?>
Köszi a figyelmeztetést!
Mutasd a teljes hozzászólást!

  • if ( is_file($path_to_image_dir.'/'.$file ) { $filenevek = $file; } ... sort($filenevek); foreach( $filenevek as $filenev) { $title = $xml_generator->addChild('title'); $title->addchild('file',$filenev); }
    tehát előbb kigyüjtöd egy tömbbe, rendezed és kiirod.
    Mutasd a teljes hozzászólást!
  • Mondjuk:


    <?php $path_to_image_dir = "xmlnek/"; $xml_string = <<<XML <?xml version="1.0" encoding="UTF-8"?> <data> </data> XML; $xml_generator = new SimpleXMLElement($xml_string); $fajlok = array(); if ( $handle = opendir( $path_to_image_dir ) ) { while (false !== ($file = readdir($handle))) { if ( is_file($path_to_image_dir.'/'.$file) ) { $fajlok[]=$file; } } natsort($fajlok); //használhatod a sort() fgv-t is! foreach($fajlok as $db) { $title = $xml_generator->addChild('title'); $title->addChild('file', $file); } closedir($handle); } $xmlFile = "behiv2.xml"; $xmlHandle = fopen($xmlFile, "w"); header("Content-Type: text/xml"); $xmlString = $xml_generator->asXML(); echo($xmlString); fwrite($xmlHandle, $xmlString); fclose($xmlHandle); ?>
    Mutasd a teljes hozzászólást!
  • Jah most látom, elrontottam a filenevek tömbbe írását, de frankadavid-nál jól van! (viszont ő elírta a $title->addChild('file',$db ); sorát )

    $filenevek[] = $file;

    Amúgy találtam egy ilyet is: glob()
    Ez elvileg rendezve adja vissza, bár a mappákat is.

    $osszes = glob("$path_to_images/*");
    $csakmappa = glob("$path_to_images/*",GLOB_ONLYDIR);
    $fajlok = array_diff($osszes,$csakmappa);
    Mutasd a teljes hozzászólást!
  • Jah most látom, elrontottam a filenevek tömbbe írását, de frankadavid-nál jól van! (viszont ő elírta a $title->addChild('file',$db ); sorát )

    1:1


    Javítva:

    <?php $path_to_image_dir = "xmlnek/"; $xml_string = <<<XML <?xml version="1.0" encoding="UTF-8"?> <data> </data> XML; $xml_generator = new SimpleXMLElement($xml_string); $fajlok = array(); if ( $handle = opendir( $path_to_image_dir ) ) { while (false !== ($file = readdir($handle))) { if ( is_file($path_to_image_dir.'/'.$file) ) { $fajlok[]=$file; } } natsort($fajlok); //használhatod a sort() fgv-t is! foreach($fajlok as $db) { $title = $xml_generator->addChild('title'); $title->addChild('file', $db); } closedir($handle); } $xmlFile = "behiv2.xml"; $xmlHandle = fopen($xmlFile, "w"); header("Content-Type: text/xml"); $xmlString = $xml_generator->asXML(); echo($xmlString); fwrite($xmlHandle, $xmlString); fclose($xmlHandle); ?>
    Köszi a figyelmeztetést!
    Mutasd a teljes hozzászólást!
  • kössz! ez tökéletes:) oda a pont
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd