xml maken van dirs
ik wil een xml maken van allen mappen die zich in een bepaalde bevinden.
een voorbeeld van de map structuur
<imgroot>
<3d>
<pdf_bestanden>
<productbeelden>
<aluminium>
<glas>
<hout>
<sfeerbeelden>
nou is de bedoeling dat de xml er op de volgende manier uit gaat zien
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
<Direcory name="imgRoot" path="../../imgRoot/" level="0">
<Item name="3D" path="../../imgRoot//3D" level="1"/>
<Item name="pdf_bestanden" path="../../imgRoot//pdf_bestanden" level="1"/>
<Item name="ProductBeelden" path="../../imgRoot//ProductBeelden" level="1">
<Item name="aluminium" path="../../imgRoot//ProductBeelden/aluminium" level="2"/>
<Item name="Glas" path="../../imgRoot//ProductBeelden/Glas" level="2"/>
<Item name="hout" path="../../imgRoot//ProductBeelden/hout" level="2"/>
<Item name="koper" path="../../imgRoot//ProductBeelden/koper" level="2"/>
<Item name="kuntstof" path="../../imgRoot//ProductBeelden/kuntstof" level="2"/>
<Item name="licht" path="../../imgRoot//ProductBeelden/licht" level="2"/>
<Item name="Portfolio" path="../../imgRoot//ProductBeelden/Portfolio" level="2"/>
<Item name="rvs" path="../../imgRoot//ProductBeelden/rvs" level="2"/>
<Item name="Staal" path="../../imgRoot//ProductBeelden/Staal" level="2"/>
</Item>
<Item name="SfeerBeelden" path="../../imgRoot//SfeerBeelden" level="1"/>
</Direcory>
?>
<Direcory name="imgRoot" path="../../imgRoot/" level="0">
<Item name="3D" path="../../imgRoot//3D" level="1"/>
<Item name="pdf_bestanden" path="../../imgRoot//pdf_bestanden" level="1"/>
<Item name="ProductBeelden" path="../../imgRoot//ProductBeelden" level="1">
<Item name="aluminium" path="../../imgRoot//ProductBeelden/aluminium" level="2"/>
<Item name="Glas" path="../../imgRoot//ProductBeelden/Glas" level="2"/>
<Item name="hout" path="../../imgRoot//ProductBeelden/hout" level="2"/>
<Item name="koper" path="../../imgRoot//ProductBeelden/koper" level="2"/>
<Item name="kuntstof" path="../../imgRoot//ProductBeelden/kuntstof" level="2"/>
<Item name="licht" path="../../imgRoot//ProductBeelden/licht" level="2"/>
<Item name="Portfolio" path="../../imgRoot//ProductBeelden/Portfolio" level="2"/>
<Item name="rvs" path="../../imgRoot//ProductBeelden/rvs" level="2"/>
<Item name="Staal" path="../../imgRoot//ProductBeelden/Staal" level="2"/>
</Item>
<Item name="SfeerBeelden" path="../../imgRoot//SfeerBeelden" level="1"/>
</Direcory>
?>
natuurlijk ben ik zelf al een beetje aan het stoeien geweest. helaas lop ik vast op het volgende.
ik loop door de dir heem maar weet niet hoe ik de loep zo moet bouwen dat ie ook se sub mappne mee neemt.
en er moet een level mee worden gegevne zoals je kan zien in de xml ik weet ook niet hoe ik zo iets moet opbouwen.
de code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
$dir = "imgRoot/";
echo '<Direcory name="'.$dir.'" path="alksjflkjasdf" level="0">';
if(isset($_GET["gdir"]) == TRUE)
{
if(get_magic_quotes_gpc() == FALSE)
{
$gdir = addslashes($_GET["gdir"]);
}
else
{
$gdir = $_GET["gdir"];
}
$gdir = htmlspecialchars($gdir,ENT_QUOTES);
if(is_dir("../" . $gdir) == TRUE)
{
$dir = "../" . $gdir . "/";
}
}
$link_dir = str_replace("../","",$dir);
$handeling = opendir($dir);
while(FALSE !== ($file = readdir($handeling)))
{
if ($file != "." AND $file != "..")
{
if(is_dir($dir . $file) == TRUE)
{
echo '<Item name="'.$file.' path="'.$link_dir . $file.'" level="1"/>';
}
}
}
echo '</Direcory>';
closedir($handeling);
?>
$dir = "imgRoot/";
echo '<Direcory name="'.$dir.'" path="alksjflkjasdf" level="0">';
if(isset($_GET["gdir"]) == TRUE)
{
if(get_magic_quotes_gpc() == FALSE)
{
$gdir = addslashes($_GET["gdir"]);
}
else
{
$gdir = $_GET["gdir"];
}
$gdir = htmlspecialchars($gdir,ENT_QUOTES);
if(is_dir("../" . $gdir) == TRUE)
{
$dir = "../" . $gdir . "/";
}
}
$link_dir = str_replace("../","",$dir);
$handeling = opendir($dir);
while(FALSE !== ($file = readdir($handeling)))
{
if ($file != "." AND $file != "..")
{
if(is_dir($dir . $file) == TRUE)
{
echo '<Item name="'.$file.' path="'.$link_dir . $file.'" level="1"/>';
}
}
}
echo '</Direcory>';
closedir($handeling);
?>
Gewijzigd op 01/01/1970 01:00:00 door Raymond
Succes.
Je wilt zeker net als bijvoorbeeld Direct Connections een bestandje van je mappen structuur maken, zodat mensen op hun eigen computer als het ware in jouw pc kunnen kijken, in plaats van de verbinding open houden en telkens opnieuw laden.
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
Goed, het is misschien een beetje offtoppic en heeft niet met je vraag te maken, maar waarom vermeld je level="x" terwijl je het "level" ook uit de xml structuur kan afleiden?
is een beetje overbodige info,
Notice: Undefined variable: Xm: in c:...........................\listpovider.php on line 11
Notice: Undefined variable: Xm: in c:...........................\listpovider.php on line 23
Notice: Undefined variable: Xm: in c:...........................\listpovider.php on line 23
ik snap niet waarom hij de var niet wil zien.
wat doe ik fout...?
de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
$dir = "../imgRoot";
getDirectory($dir);
$XmL = '';
function getDirectory($directory) {
require_once('clsListFiles.php'); // klasse includen
$setDir = '.'; // basismap -> vanwaaruit wordt er vertrokken?
$specDir = $directory ; // specifieke map -> welke bestanden wil je uiteindelijk zien?
$XmL .= '<(vraagteken)xml version="1.0" encoding="UTF-8"(vraagteken)>';
$XmL .= '<Direcory name="imgRoot" data="imgRoot">';
function makeNodes($p_dir,$setDir) {
$XML ='';
$list = new clsListFiles(); // altijd nodig, hier maak je een instantie aan van de listFiles klasse
$list->setDir($setDir.'/'.$p_dir);
$folders = $list->getFolders();
if( count($folders) ) {
foreach ($folders as $folder) { // voor elke map
if ($folder != "thumbs") {
$XmL .= '<Item name="'.$folder.'" path="'.$p_dir.'/'.$folder.'">'."\n";
if($p_dir == '') {
makeNodes($folder, $setDir); // nodes aanmaken
} else {
makeNodes($p_dir.'/'.$folder, $setDir); // functie opnieuw aanroepen
}
$XmL .= '</Item>';
}
}
}
}
makeNodes($specDir, $setDir); // nodes (= afzonderlijke bestanden -> niet mappen!) aanmaken
$XmL.= '</Direcory>';
echo $XmL;
}
?>
$dir = "../imgRoot";
getDirectory($dir);
$XmL = '';
function getDirectory($directory) {
require_once('clsListFiles.php'); // klasse includen
$setDir = '.'; // basismap -> vanwaaruit wordt er vertrokken?
$specDir = $directory ; // specifieke map -> welke bestanden wil je uiteindelijk zien?
$XmL .= '<(vraagteken)xml version="1.0" encoding="UTF-8"(vraagteken)>';
$XmL .= '<Direcory name="imgRoot" data="imgRoot">';
function makeNodes($p_dir,$setDir) {
$XML ='';
$list = new clsListFiles(); // altijd nodig, hier maak je een instantie aan van de listFiles klasse
$list->setDir($setDir.'/'.$p_dir);
$folders = $list->getFolders();
if( count($folders) ) {
foreach ($folders as $folder) { // voor elke map
if ($folder != "thumbs") {
$XmL .= '<Item name="'.$folder.'" path="'.$p_dir.'/'.$folder.'">'."\n";
if($p_dir == '') {
makeNodes($folder, $setDir); // nodes aanmaken
} else {
makeNodes($p_dir.'/'.$folder, $setDir); // functie opnieuw aanroepen
}
$XmL .= '</Item>';
}
}
}
}
makeNodes($specDir, $setDir); // nodes (= afzonderlijke bestanden -> niet mappen!) aanmaken
$XmL.= '</Direcory>';
echo $XmL;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door raymond