Autor | Zpráva | ||
---|---|---|---|
tomiksk Profil |
#1 · Zasláno: 21. 3. 2012, 11:52:53
Čuss na internete som si našiel script a trochu som si ho upravil :
<? $dom = new DOMDocument("1.0", "utf-8"); $elements = $dom->CreateElement("data"); $element = $dom->CreateElement("Subory"); $element->setAttribute("NazevSouboru", false); $Atribname = $element->getAttributeNode("NazevSouboru"); $Atribname->value = $filename; $elements->appendChild($element); $dom->appendChild($elements); $dom->save("patchlist.xml"); ?> a XML vyzera takto: <?xml version="1.0" encoding="utf-8"?> <data><Subory NazevSouboru="patch" /></data> ale problem je v tom že v $filename su ešte subory: auto, all, make, patch ... a ono to stale vypisuje jen ten poslednej... Potrebujem nejak ten script upravit aby sa do XML vložily všetky a vyzeralo to takto: <?xml version="1.0" encoding="utf-8"?> <data><Subory NazevSouboru="auto" /><Subory NazevSouboru="all" /><Subory NazevSouboru="make" /><Subory NazevSouboru="patch" /></data> |
||
Joker Profil |
#2 · Zasláno: 21. 3. 2012, 11:57:56
tomiksk:
„Potrebujem nejak ten script upravit aby sa do XML vložily všetky“ Tak je potřeba ty prvky vytvářet v nějakém cyklu. |
||
tomiksk Profil |
#3 · Zasláno: 21. 3. 2012, 12:02:45 · Upravil/a: tomiksk
foreach (glob("patch/*") as $filename) {
$dom = new DOMDocument("1.0", "utf-8"); $elements = $dom->CreateElement("data"); $element = $dom->CreateElement("Subory"); $element->setAttribute("NazevSouboru", false); $Atribname = $element->getAttributeNode("NazevSouboru"); $Atribname->value = $filename; $elements->appendChild($element); $dom->appendChild($elements); $dom->save("patchlist.xml"); } <-- Celý script ono to zistí ake su subory v zložke patch a ptm ich zapíše do XML.... A když dám jen echo $filename; tak to v pohode vypiše všetky subory |
||
Joker Profil |
#4 · Zasláno: 21. 3. 2012, 12:14:51
tomiksk:
Aha, takže: Vytvoření dokumentu a elementu data musí být před cyklem, připojování elementů soubory uvnitř cyklu a připojení elementu data a uložení dokumentu za cyklem. Mimotematická poznámka, ten styl pojmenovávání není úplně šťastný, jednak v XML se element jmenuje <Subory>, ale přitom drží informace o jednom souboru, jednak pojmenovávat proměnné stylem $element a $elements je potenciální zdroj chyb. |
||
tomiksk Profil |
#5 · Zasláno: 21. 3. 2012, 12:29:33
Takže script by mal vyzerat nejak takto :
$dom = new DOMDocument("1.0", "utf-8"); $data = $dom->CreateElement("data"); foreach (glob("patch/*") as $filename) { $subory = $dom->CreateElement("Subor"); $subory->setAttribute("NazevSouboru", false); $Atribname = $subory->getAttributeNode("NazevSouboru"); $Atribname->value = $filename; } $data->appendChild($subory); $dom->appendChild($data); $dom->save("patchlist.xml"); ale aj tak to nefunguje :-( |
||
Joker Profil |
#6 · Zasláno: 21. 3. 2012, 12:41:58
tomiksk:
Ne, ještě $data->appendChild($subory); musí být uvnitř cyklu.
V každém cyklu se přece musí: - Vytvořit nový element <Subor> - Naplnit atributy - Připojit k elementu <data> |
||
tomiksk Profil |
#7 · Zasláno: 21. 3. 2012, 12:44:56
Ano :-)) Dakujem Pekne :-))
|
||
Časová prodleva: 12 let
|
0