SimpleXML e seu não tão simples usar o modelo de objeto: Problema & solução
SimpleXML é simples usar-se como o seu nome o sugere. Entretanto é uma dor quando você precisa de verific o valor de um elemento que possa ou não possa existir.
No short usá-lo no esquema de XML com elementos opcionais é uma dor real. Porque SimpleXML cria somente os objetos para que os dados existem, você terá que escrever todas as vezes o código feio para verific para ver se há a existência de um objeto antes de você o acesso seu valor.
Você não pode resolvê-lo simplesmente escrevendo um método da conveniência. Deixa para compreender o problema e então nós resolvê-lo-emos.
A vantagem
SimpleXML é muito simples usar-se. Você alcança elementos porque você alcançaria uma hierarquia do objeto:
$xml->Items [0] - o mais >Request [0] - >Error dos >Errors [0] - [0] - >Status
O problema
SimpleXML cria objetos somente para os elementos de XML que têm dados (e direita assim). Isto fá-lo eficiente. Entretanto igualmente faz mais duro usar-se quando seu esquema é flexível com elementos opcionais. Deixa para tomar o exemplo acima. Você não pode com segurança alcançar o status como acima se os erros são um elemento opcional que esteja somente atual em que há um erro. E você não pode verific a existência do status como esta:
isset ($xml->Items [0] - o mais >Request [0] - >Error dos >Errors [0] - [0] - >Status)
porque os erros não podem estar atuais. Para encontrá-lo assim se há qualquer erro primeiramente têm que verific a existência dos erros e então a existência do status (possivelmente) antes que você possa realmente verific o status. E isto é verdadeiro para toda a profundidade da hierarquia do objeto. Você pode ver como rapidamente este bastão transformar-se uma dor principal na garganta. Igualmente você é muito provável faltar algum e causar trabalheiras da manutenção. O código torna-se unmaintainable demasiado.
Solução
Minha solução é usar XPath para tais situações. Diz-lhe succintly a disponibilidade e o valor (se disponível) de um campo.
Conclusão
SimpleXML conjuntamente com XPath é uma maneira muito poderosa de processar seus dados de XML no PHP.
Arquivado sob a notícia de título, como a, PHP, nota da tecnologia, tecnologia, correia fotorreceptora, serviços de correia fotorreceptora |
|
RSS 2.0 |
Trackback este artigo |
Envie por correio electrónico este artigo
Você pode igualmente gostar de ler |


Adicione aos favoritos de Technorati

































Novembro 1õ, 2005 no 11:42 pm
[...] Uns SimpleXML e seu não tão simples usar o modelo de objeto: O problema & a solução” SimpleXML não trabalham com PHP 5.x: Problema & solução novembro 1õ, 2005 por AngsumanChakraborty [...]
Novembro 2ò, 2005 no 8:37 am
[...] Relata Sony DRM Rootkit que viola diversas licenças da fonte aberta, desejo do Natal das lista de Google AdSense, fornece pontas em Google Analytics e simplifica SimpleXML para colaboradores do PHP. [...]
Novembro 2ò, 2005 no 8:42 am
[...] Relata Sony DRM Rootkit que viola diversas licenças da fonte aberta, desejo do Natal das lista de Google AdSense, fornece pontas em Google Analytics e simplifica SimpleXML para colaboradores do PHP. [...]
Dezembro 19o, 2005 no 2:55 am
[...] Relata Sony DRM Rootkit que viola diversas licenças da fonte aberta, desejo do Natal das lista de Google AdSense, fornece pontas em Google Analytics e simplifica SimpleXML para colaboradores do PHP. [...]