Ir para o conteúdo
pouic

Adicionar elementos a um xml

Mensagens Recomendadas

pouic    0
pouic

Boas pessoal alguem pode explicar como posso ler um xml e adicionar um elemento?

ex. Inicial

<?xml version="1.0" encoding="UTF-8"?>
<candidate>
<person>
	<first_name>Nairoby</first_name>
	<last_name>Del Rosario</last_name>
</person>
</candidate>

queria adicionar n elementos <person> a este ficheiro......

ex. Final

<?xml version="1.0" encoding="UTF-8"?>
<candidate>
<person>
	<first_name>Nairoby</first_name>
	<last_name>Del Rosario</last_name>
</person>
<person>
	<first_name>Rosario</first_name>
	<last_name>John</last_name>
</person>
<person>
	<first_name>Joe</first_name>
	<last_name>Marrie</last_name>
</person>
</candidate>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

Para ler podes usar uma destas duas funções dependendo do que estás a usar, um ficheiro um uma string:

http://se.php.net/manual/pt_BR/function.simplexml-load-file.php

http://se.php.net/manual/pt_BR/function.simplexml-load-string.php

Para adicionar um elemento podes usar por exemplo esta função:

http://se.php.net/manual/pt_BR/function.simplexml-element-addChild.php

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pouic    0
pouic

Estava a tentar usar o codigo abaixo.

<?php

	$xmldoc = new DOMDocument();
    $xmldoc->load('comments.xml');

 $persons = $xmldoc->appendChild($xmldoc->createElement('person')); 



 $first_name = $persons->appendChild($xmldoc->createElement('first_name')); 
 $first_name->appendChild( 
				 $xmldoc->createTextNode('maria')); 


 $last_name = $persons->appendChild($xmldoc->createElement('last_name')); 
 $last_name->appendChild( 
				 $xmldoc->createTextNode('maria')); 


	$xmldoc->formatOutput = true; 

    $xmldoc->save('comments.xml');

?> 

Mas não está a funcionar como queria...

como está ao correr, o xml fica com esta estrutura

<?xml version="1.0" encoding="UTF-8"?>
<candidate>
   <person>
      <first_name>Nairoby</first_name>
      <last_name>Del Rosario</last_name>
   </person>
</candidate>
<person>
  <first_name>maria</first_name>
  <last_name>maria</last_name>
</person>

queria colocar o elemento adicionado, dentro do elemento principal "<candidate>"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

$persons = $xmldoc->appendChild($xmldoc->createElement('person'));

Tens que fazer algo como (isto não sei se é código válido):

$persons = $xmldoc->getElementsByTagName("candidate")->item(0)->appendChild($xmldoc->createElement('person'));

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

Deve dar, mas qual é a necessidade disso?

Nunca consegui com o DOM, mas realmente não há necessidade, a não ser que o objectivo seja ver indentado no bloco de notas ou outro editor, porque quando aberto no IE por exemplo, aparece tudo indentado .. Also, não estar indentado deve pesar menos no browser ou em qualquer sistema de leitura (penso eu)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

Ok. era mais para quando tiver a necessidade de editar alguma coisa em NPad ter o código todo direito :P

Podes usar php para fazer isso, com o "\r\n" e "\t", se não me engano, mas terá de ser com o ficheiro já gravado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade