Ir para conteúdo

Arquivado

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

montano

DOM x SimpleXML

Recommended Posts

Boa tarde,

 

Eu estou manipulando XML, preciso de funçoes como, ler, quebrar tags em vetor, ler o conteudo essas coisas.

 

Mechi um poco em cada, no DOM e no SimpleXML, no DOM eu notei que é preciso saber um poco mais, ele exige que use os metodos dele para tudo mas me parece ser mais completo.

 

Oque eu posso fazer com um eu posso com o outro? Minha maior duvida é se eles fazem a mesma coisa ou não, oque me parece é que o DOM segue o padrão W3C e pode ser usado em outras linguagens.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@montano,

 

Tudo depende do que você precisa.

 

Veja, SimpleXML como o próprio nome sugere, é simple e permitirá que você faça as coisas de uma forma mais simples e rápida.

 

DOM, como você mesmo disse, é especificado pela W3C Web Applications Working Group e por isso, se duas linguagens implementam a especificação, você poderá utilizar a mesma estrutura em ambas. Esse é justamente o problema de se trabalhar com SAX, que não existe uma especificação e, consequentemente, existirá uma nova curva de aprendizado para cada linguagem que se for trabalhar.

 

Independentemente de SAX ou DOM, evite sempre trabalhar com implementações diretamente em seu código final porque, mais cedo ou mais tarde, você estará utilizando o artifício Ctrl + C, Ctrl + V e, mais cedo ou mais tarde você terá problemas.

 

O XML não passa de um Composite de nós (ou lista de nós) e atributos (ou lista de atributos), modele sua aplicação para trabalhar com interfaces e abstraia a implementação. O padrão de projeto Bridge pode ser uma saída para essa situação.

 

EDIT:

 

Um quote para a Wikipedia:

A principal vantagem do SAX é o menor gasto de memória, o que é conseguido através do processamento serial do documento. Ao contrário do DOM, que carrega todo o documento na memória, é preciso manter na memória apenas as tags externas a aquela que está sendo visitada. Outra vantagem é o processamento em fluxo, ideal para leituras contínuas no disco ou recebimento através da rede.

 

Já a principal desvantagem do SAX é a potencial impossibilidade de validação do mesmo através de um DTD que em certos casos só pode ser realizada se o documento estiver integralmente na memória. Outra desvantagem é a própria natureza serial que impossibilita saltos e leituras em trechos anteriores do documento.

 

 

http://pt.wikipedia.org/wiki/Simple_API_for_XML

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pelas dicas e pelo link.

 

@montano,

O XML não passa de um Composite de nós (ou lista de nós) e atributos (ou lista de atributos), modele sua aplicação para trabalhar com interfaces e abstraia a implementação. O padrão de projeto Bridge pode ser uma saída para essa situação.

 

No meu caso eu preciso trabalhar com o XML porque estou trabalhando em aplicativo para NFe e por padrao do SEFAZ tem que ser assim. Mas ja que você falou, como seria esse modelo de aplicação com interfaces e padrao Bridge?

 

A respeito do SAX eu acho mesmo que ele é melhor porem como no link diz não é 100% completo e não segue um padrão.

Você acha que eu deveria usar os dois em minha aplicação, dependendo da minha necessidade ou seja, usar o DOM somente quando eu necessitar uma validação DTD? Que eu acho que nao vou precisar, porque eu trato com schemas XML que ja vem por padrao do GOV.

 

 

Agradecido pelas dicas

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.