2010-01-19 13 views
10

Come posso modificare il valore in un file xml usando simpleXML?modifica XML con simpleXML

So come creare il file, ma non come modificare il valore in un file esistente?

+0

Possibile duplicato di [Come posso impostare il valore di testo di SimpleXmlElement senza utilizzare il suo genitore?] (Http://stackoverflow.com/questions/3153477/how-can-i-set-text-value-of-simplexmlelement- senza-utilizzo-suo-padre) –

risposta

13

Certo si può modificare con SimpleXML:

$input = <<<END 
<?xml version='1.0' standalone='yes'?> 
<documents> 
    <document> 
    <name>spec.doc</name> 
    </document> 
</documents> 
END; 

$xml = new SimpleXMLElement($input); 
$xml->document[0]->name = 'spec.pdf'; 
$output = $xml->asXML(); 

Date un'occhiata alla examples.

7

Carica il tuo XML con SimpleXML e apporta le modifiche. Quindi è possibile utilizzare il metodo asXML per salvare l'XML in un file (si passa il nome del file come argomento):

$xml = new SimpleXMLElement($xmlString); 
// do the manipulation here 
$xml->asXML ('/path/to/your/file.xml'); 
4

Ricordare che sebbene sia possibile modificare XML con SimpleXML, esistono delle limitazioni. Ad esempio, è possibile rimuovere o eliminare un nodo o un elemento. Puoi cancellarlo in modo che sia vuoto, ma non puoi eliminarlo del tutto. Per questo, hai bisogno di DOM, o qualcosa del genere.

0

Sto lavorando in questo modo (è praticamente la stessa cosa ma potrebbe essere di aiuto): Il file test.xml potrebbe essere qualsiasi estensione purché sia ​​un testo xml semplice.

Test.xml:

<?xml version="1.0" encoding="utf-8"?> 
<sitedata> 
    <Texts> 
     <ANode SomeAttr="Green" OtherAttr="Small"/>This is the text I'm changing.</ANode> 
    </Texts> 
</sitedata> 

E il codice PHP:

$xml=simplexml_load_file("test.xml") or die("Error: Cannot create object"); 
$SomeVar="<b>Text. This supports html code.</b><br/>I also work with variables, like GET or POST."; 
$xml->Texts[0]->{'ANode'}=$SomeVar; 
$xml->asXml('test.xml'); 

Risultati Test.xml:

<?xml version="1.0" encoding="utf-8"?> 
<sitedata> 
    <Texts> 
    <ANode SomeAttr="Green" OtherAttr="Small"/>&lt;b&gt;Text. This supports html code.&lt;/b&gt;&lt;br/&gt;I also work with variables, like GET or POST.</ANode> 
    </Texts> 
</sitedata> 

Speranza che aiuta!

Problemi correlati