cercare in file.xml

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
ciao! ho un file xml strutturato cosi:

PHP:
<template>
    <header>
        <background>#ffff</background>
        <width>115px</width>
    </header>
    <div>
        <background>#3242</background>
        <width>80px</width>
    </div>
    <footer>
        <background>#ccc</background>
        <width>115px</width>
    </footer>
    .
    .
    .
</template>

come posso stampare i valori di un determinato tag ??
ho in mente una cosa simile,vi butto una bozza:
PHP:
$h=fopen("file.xml","r");
function cerca($tag,$sottotag)
{

while(?)
{
if(trova($h,$tag)
{
    while(?)
    {
    if(trova($h,$sottotag)
    echo $valore;
    }
}
}
}
in cui come parametri viene preso x esempio "header","background" e dovrà restituirmi il valore "#fff" andando a sfogliare prima tutti i tag principali,poi i sottotag.la funzione che ho chiamato trova chiaramente va sostiuita con una funzione reale! XD
spero di essere stato chiaro!
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
Io fossi in te utilizzerei la funzione simplexml_load_file.
E la funzione trova la farei banalmente così:
PHP:
function trova($xml, $tag, $sottotag)
{
    return $xml->{$tag}->{$sottotag};
}

$xml = simplexml_load_file('file.xml');
echo trova($xml, 'header', 'background');

Ovviamente il file .xml dovrà essere un file valido, altrimenti non andrà.
J.
 

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
aaahh esattamente quello che volevo ti ringrazio!!!:mavieni:
mi stavo fondendo il cervello con roba tipo fscanf,fread e cose varie.questa funzione va benissimo!
ma se invece volessi sostituire i valori del xml x esempio con dei dati provenienti da un form?
posso usare comunque simplexml_load_file()?
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
Se intendi dire che vuoi utilizzare dei dati provenienti da un form per cercare nel file xml, certo che puoi:
PHP:
echo trova($xml, $_POST['tag'], $_POST['tag2']);
...se intendi qualcos'altro, allora non ho capito!

J.
 

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
no intendevo sostituirli scrivendoli sull xml!

qualcosa tipo questo:
PHP:
str_replace(  trova($xml, 'header', 'background'),$_POST['dato'] ,bo? );
ovviamente è sbagliata,giusto per farti capire cosa intendo!
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
Ciao, ti ho scritto questa funzione che potrebbe esserti utile (se ho capito quello che ti interessa!):
PHP:
function edit_xml($file, $tag, $subTag, $tagValue)
{
    $_xml  = '<' . '?' . 'xml version="1.0"?>' . "\n";
    $_xml .= '<template>' . "\n";
    
    $xml = simplexml_load_file($file);
    foreach($xml->children() as $tagName => $tagValues) {
        if ($tag == $tagName) {
            if (is_null($subTag) && is_null($tagValue)) {
                continue;
            } elseif (is_null($tagValue)) {
                unset($tagValues->{$subTag});
            } else {
                $tagValues->{$subTag} = $tagValue;
            }
        }
        
        $_xml .= '  <' . $tagName . '>' . "\n";
        foreach($tagValues as $valueName => $value) {
            $_xml .= '    <' . $valueName . '>' . $value . '</' . $valueName . '>' . "\n";
        }
        $_xml .= '  </' . $tagName . '>' . "\n";
    }
    
    if (!isset($xml->{$tag})) {
        $_xml .= '  <' . $tag . '>' . "\n";
        $_xml .= '    <' . $subTag . '>' . $tagValue . '</' . $subTag . '>' . "\n";
        $_xml .= '  </' . $tag . '>' . "\n";
    }
    
    $_xml .= '</template>' . "\n";
    
    return file_put_contents($file, $_xml);
}
Ti permette di:
  • Aggiungere ed eliminare un tag esistente (tipo <header>, ecc.)
  • Aggiungere, modificare ed eliminare una proprietà esistente (tipo <background>, ecc.)

Il funzionamento di quella funzioncina è il seguente:
PHP:
// nuovo tag
edit_xml('file.xml', 'nuovotag', 'background', 'black');

// eliminare un tag
edit_xml('file.xml', 'tagesistente', null, null);

//aggiungere una proprietà
edit_xml('file.xml', 'tag', 'margin', '10px');

// modificare una proprietà
edit_xml('file.xml', 'tag', 'margin', '5px');

//eliminare una proprietà
edit_xml('file.xml', 'tag', 'margin', null);

Spero ti sia utile... ;)

N.B. il file .xml oltre ad essere valido, deve anche avere i permessi di lettura e scrittura.
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Cercare un file all'interno della directory virtuale IIS PHP 3
M [Visual Basic] Cercare un file pdf all'interno di una cartella attraverso il valore di una txtbox Visual Basic 1
O Cercare file di testo e se esiste stampare il suo contenuto a schermo PHP 3
M [Java] Cercare una stringa in un file di testo Java 1
A Cercare un carattere uguale in due stringhe Java 5
B Sono qui per cercare partner o collaborazioni tecniche Presentati al Forum 1
M [PHP] Cercare l'ultima immagine caricata in una cartella datata PHP 15
F [PHP] Cercare voci uguali nel db e unire alcune variabili PHP 0
M come cercare domini occasione Compravendita siti e domini 0
B Cercare il nome più popolare su una tabella PHP 11
E Cercare un valore e scrivere tutta la riga txt che lo contiene PHP 15
max_400 cercare una parola in una stringa PHP 5
T [risolto]Inserire in una variabile del codice HTML e poi cercare in quella variabile con getelements Javascript 8
P cercare record su db mysql PHP 12
E come cercare una stringa in un database mySQL PHP 9
D Non so come far cercare un intera stringa in una query specificata! PHP 4
M Cercare stringa in Xml PHP 0
3 cercare su più tabelle Classic ASP 14
G Dove cercare domini liberi non europei? Domini 0
A dove trovo cartina italia divisa in regioni per cercare nelle province? Webdesign e Grafica 2
E fpdf salvare e aprire il file PHP 4
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1
I caricamento file in sottocartella nome utente PHP 3
I cartella sottocartella apri o scarica file pdf PHP 1
K Sfondo nuovo file Photoshop 0
C Wp-admin a file php WordPress 5
G Importazione file .sql Web Server 0
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
MarcoGrazia HTML5 <picture> e i file source HTML e CSS 2
MarcoGrazia criptare un file PHP 2
U Link a doppio file PHP PHP 0
U Link a pagina ed esecuzione file PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
I Documento file word Java 0
FDF182 file .bin nell' email PHP 0
E Sito violato, file modificati, cartelle create WordPress 1

Discussioni simili