modificare xml con un form?

master1986

Utente Attivo
8 Ott 2012
234
0
16
Ciao ragazzi, volevo farvi una domanda, ho un xml sul mio dominio, come sempre ci sono dei contenuti all'interno.


la domanda che voglio farvi è questa: volendo si possono modificare i contenuti (cioè i valori) utilizzando un form?
 
Hai un file XML e vuoi modificare il suo contenuto tramite PHP?
PHP:
<?php
define('PATH', __DIR__ . '/foobar.xml');

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if (!isset($_POST['contents'])) {
        die('Non hai specificato il contenuto del file.');
    }

    file_put_contents(PATH, $_POST['contents']);

    echo 'Il file è stato modificato correttamente.';
} else {
    $contents = file_get_contents(PATH);

    echo <<<EOF
<form method="post" action="{$_SERVER['REQUEST_URI']}">
    <div>
        <label>Contenuto:</label>
        <textarea name="contents">{$contents}</textarea>
    </div>

    <div>
        <button type="submit">Invia</button>
    </div>
</form>
EOF;
}
 
Si certo che puoi, ma file con molti campi o abbastanza estesi sarebbe più logico applicare una sostituzione tramite upload di un nuovo file xml

Ti mostro un esempio sbrigativo

PHP:
<form action="index.php" method="POST">
    <input type="text" name="campo" placeholder="campo xml">
    <input type="submit">
</form>

<?php

if(!empty($_POST['campo'])){
    $xml = simplexml_load_file('file.xml');
    $campo = $xml->xpath('/campo');
    $save_file = str_replace($campo,htmlspecialchars(utf8_encode($_POST['campo'])),$xml->asXML());
    file_put_contents('file.xml',$save_file);
    echo 'File cambiato con successo';
}

?>

file xml
Codice:
<?xml version="1.0" encoding="utf-8"?>
<campo>prova</campo>


Dato che mi ha anticipato, la soluzione di alessandro è più che valida se l'utente conosce le basi del xml
 
Ultima modifica:
grazie ragazzi delle risposte


praticamente i file xml che ho nel dominio li scarico ogni giorni, ma alcuni valori potrebbero non essere perfetti quindi dovrei a volte cambiarli.

nefyt in effetti l'xml ha un bel pò di valori più che altro divisi in periodi.
 

Discussioni simili