Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Espector

Editar arquivo xml com php

Recommended Posts

Boa noite,

 

Pesquisei em diversos sites e não encontrei nada, espero a ajuda de todos!

 

Tenho o seguinte formulário em HTML:

 

Index.html

<form>
<input type="text" name="nome" value="Nome"></br>
<input type="text" name="senha" value="Senha"></br>
<select name="lista" size="1">
 <option value="1">Selecione</option>
 <option value="CEU">CEU</option>
 <option value="MYPROFILE">MYPROFILE</option>
</select> </br>
<textarea name="comentario" rows="5" cols="40"></textarea></br>
<input type="submit" value="Enviar" >
</form>

 

86f1d217.jpg

 

E possui um arquivo.xml.

 

Gostaria que ao inserir as informações no formulário HTML ele joga-se dentro do arquivo.xml no seguinte formato:

 

<user name="felix" password="1100" profiles="myprofile" /> <!-- marcelod2 -->

 

Nome = "felix"

Senha = "1100"

Selecione = "myprofile"

Comentario = <!-- marcelod2 -->

 

Observe que as informações que foi colocado no formulário HTML iriam no formato xml para o arquivo.xml.

 

Teria como fazer isso em PHP? ou de alguma outra forma?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você pode trabalhar com a classe DOMDocument

 

Exemplo:

<?php

$id       = 1;
$name     = 'Carlos Coelho';
$password = '12345';
$profile  = 'My profile';
$comment  = 'My comment';
$filename = 'file.xml';

$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->formatOutput = true;
$DOMDocument->preserveWhiteSpace = false;

if( file_exists( $filename ) )
{
   $DOMDocument->load( $filename );
   $users = $DOMDocument->getElementsByTagName( 'users' )->item( 0 );
   $id = ( int ) $users->lastChild->getAttribute( 'id' );
   $id++;
}
else
{
   $users = $DOMDocument->createElement( 'users' );
}

$user  = $DOMDocument->createElement( 'user' );
$user->setAttribute( 'id', $id );
$user->appendChild( $DOMDocument->createElement( 'name', $name ) );
$user->appendChild( $DOMDocument->createElement( 'password', $password ) );
$user->appendChild( $DOMDocument->createElement( 'profile', $profile ) );
$user->appendChild( $DOMDocument->createElement( 'comment', $comment ) );
$users->appendChild( $user );
$DOMDocument->appendChild( $users );
$DOMDocument->save( $filename );

?>

 

Vai gerar um arquivo xml assim:

<?xml version="1.0" encoding="UTF-8"?>
<users>
 <user id="1">
   <name>Carlos Coelho</name>
   <password>12345</password>
   <profile>My profile</profile>
   <comment>My comment</comment>
 </user>
 <user id="2">
   <name>Carlos Coelho</name>
   <password>12345</password>
   <profile>My profile</profile>
   <comment>My comment</comment>
 </user>
 <user id="3">
   <name>Carlos Coelho</name>
   <password>12345</password>
   <profile>My profile</profile>
   <comment>My comment</comment>
 </user>
</users>

 

Depois para "puxar" o que você quer:

<?php

$id = 3;
$filename = 'file.xml';

$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->load( $filename );
$DOMXPath = new DOMXPath( $DOMDocument );

foreach( $DOMXPath->query( sprintf( './/user[@id="%u"]', $id ) ) as $childNodes )
{
   printf( '<strong>%s:</strong> %u<br/>', ucfirst( $childNodes->attributes->item( 0 )->name ), $childNodes->getAttribute( 'id' ) );

   foreach( $childNodes->childNodes as $childNode )
   {
       printf( '<strong>%s:</strong> %s<br/>', ucfirst( $childNode->nodeName ), $childNode->nodeValue );
   }
}

?>

 

Saída:

Id: 3
Name: Carlos Coelho
Password: 12345
Profile: My profile
Comment: My comment

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite,

 

Consegui da seguinte maneira:

 

<?php 
extract($_POST);

$xml = simplexml_load_file ("teste.xml");

$filho = $xml->addChild('user','');
$filho->addChild("name","$nome");
$filho->addChild("password","$senha");
$filho->addChild("profiles","$profiles");
file_put_contents ("teste.xml", $xml->asXML());

 echo "<script>window.location='index.html';alert('Dados Incluidos com Sucesso!');</script>";

?>

 

Ele grava certinho pegando as informações do formulário e jogando no teste.xml!!

 

Porém ele joga sempre na ultima linha do arquivo xml.

 

Teria como fazer para ele jogar conforme o código abaixo?

 

<user-manager class="com.bowman.cardserv.SimpleUserManager">
   <auth-config>

   <user name="admin" password="adsl" max-connections="5" admin="true"/>

   "O usuário cadastrado seria jogado dentro deste campo."

</auth-config>
 </user-manager>

 

Ou teria como eu vincular o "user-manager" ou "auth-config" a outro XML ou iria conter os usuarios?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.