| Autor | Zpráva | ||
|---|---|---|---|
| Milkys Profil |
Dobrý podvečer,
Prosím Vás mohl by mi někdo poradit jak sloučit dva xml soubory se stejnou strukturou a zároveň je seřadit podle jednoho elementu např. elementu hits? Osobně používám na rozsekání xml xpath a na řazení sortedxpath, ale nyní jsem v koncích. Třeba bude stačit odkaz kde se to řeší. Struktura xml souborů: <items> <item typ="2" id="10362" hits="311167" /> <item typ="1" id="10362" hits="22167" /> </items> Předem děkuji. |
||
| mimochodec Profil |
#2 · Zasláno: 21. 4. 2012, 09:09:43
Jestli je ta struktura jednoúrovňová, jak tady v té ukázce, tak by neměl být problém načíst to v php do dvourozměrného pole a seřadit v něm.
|
||
| Milkys Profil |
Ano, struktura je jednoúrovňová. Na zpracování xml dokumentů (i na ty "hlubší") používám úspěšně simplexml.
Něco jsem našel, že to bude jako $promena[neco][jeste_neco]; Můžete mi prosím ukázat příklad - v php jsem začátečník. Je to ten příklad s šachama zde? Hledám správně? include ('SimpleDOM.php');
echo 'Seřazení elem. hits z 1. xml souboru: <br/>';
$xml = simpledom_load_file("test.xml");
$result = $xml->sortedxpath("//item",'@hits', SORT_DESC);
foreach ($result as $item) {
$typek = $item['typ'];
$idecko = $item['id'];
$hitik = $item['hits'];
echo $hitik.'<br/>';
} |
||
| Milkys Profil |
#4 · Zasláno: 22. 4. 2012, 13:42:21
Funkční řešení. Třeba to někomu pomůže.
<?php
include ('SimpleDOM.php');
echo 'Spojení dvou xml soouborů a jejich seřazení dle hits:<br/>';
//vytvoření prvního pole ze souboru test.xml
$xml = simplexml_load_file("test.xml");
$result = $xml->xpath("//item");
//vytvoření druhého pole ze souboru test2.xml
$xml = simplexml_load_file("test2.xml");
//připojení nového pole za to stávající
$result = array_merge ($result,$xml->xpath("//item"));
$endline = "\n";
$vystup = '<?xml version="1.0" encoding="utf-8"?>'.$endline;
$vystup .= '<!DOCTYPE hotels [
<!ENTITY nbsp " ">
<!ENTITY amp "&">
<!ENTITY lt "<">
<!ENTITY gt ">">
<!ENTITY ndash "–">
<!ENTITY quot """>
<!ENTITY times "×">
]>'.$endline;
$vystup .= '<items>'.$endline;
foreach ($result as $item) {
$typek = $item['typ'];
$idecko = $item['id'];
$hitik = $item['hits'];
$vystup .= '<item'.$endline;
$vystup .= 'typ="'.$typek.'"'.$endline;
$vystup .= 'id="'.$idecko.'"'.$endline;
$vystup .= 'hits="'.$hitik.'" />'.$endline;
}
$vystup .= '</items>'.$endline;
$fop = fopen("spojene-soubory.xml", "w");
fwrite($fop, $vystup);
fclose($fop);
$xml3 = simpledom_load_file("ubytovani.xml");
$result3 = $xml3->sortedxpath("//item",'@hits', SORT_DESC);
foreach ($result3 as $item3) {
$typek3 = $item3['typ'];
$idecko3 = $item3['id'];
$hitik3 = $item3['hits'];
echo $hitik3.'<br/>';
}
?> |
||
|
Časová prodleva: 14 let
|
|||
0