2010-01-19 26 views
10

¿Cómo puedo editar el valor en un archivo xml usando simpleXML?editar XML con simpleXML

Sé cómo crear el archivo, pero no cómo editar el valor en un archivo existente?

+0

Posible duplicado de [¿Cómo puedo establecer el valor de texto de SimpleXmlElement sin utilizar su elemento principal?] (Http://stackoverflow.com/questions/3153477/how-can-i-set-text-value-of-simplexmlelement- sin-usar-su-padre) –

Respuesta

13

Claro que se puede editar 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(); 

Tome un vistazo a la examples.

7

Cargue su XML con SimpleXML y realice los cambios. A continuación, puede utilizar el método asXML para guardar el XML en un archivo (se pasa el nombre de archivo como el argumento):

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

Tenga en cuenta que aunque puede editar XML con SimpleXML, existen limitaciones. Por ejemplo, puede eliminar o eliminar un nodo o elemento. Puede borrarlo para que quede en blanco, pero no puede eliminarlo por completo. Para eso, necesitas DOM, o algo así.

0

Estoy trabajando así (es lo mismo, pero podría ayudar): El archivo test.xml podría ser cualquier extensión, siempre y cuando sea un texto xml simple.

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> 

Y el código 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'); 

Resultados 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> 

espero que ayude!

Cuestiones relacionadas