XML com namespaces
Neste exemplo iremos demonstrar como acessar o conteúdo de um documento XML quando este utiliza NameSpaces.
Nos casos em que o documento XML utiliza NameSpaces, é necessário utilizar o NameSpace para acessar seu conteúdo. Neste exemplo, temos um documento que utiliza o NameSpace "UML". Antes de mais nada, precisamos obter os NameSpaces utilizados pelo documento por meio do método getNameSpaces(TRUE). Este método irá retornar um vetor de NameSpaces. A partir do NameSpace, podemos acessar o método children(). O método children() retorna todos os nodos filhos de um elemento. Neste caso em específico, estamos obtendo todos os nodos filhos de "XMI.content" do NameSpace "UML". Sem utilizar o NameSpace nem um var_dump() exibe adequadamente a estrutura do XML. Segue o exemplo.
<?php
$XML = "<?xml version = '1.0' encoding = 'UTF-8' ?>
<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Jun 22 20:34:01 BRT 2009'>
<XMI.header>
<XMI.documentation>
<XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
<XMI.exporterVersion>0.28(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion>
</XMI.documentation>
</XMI.header>
<XMI.content>
<UML:Model name = 'ModeloSemNome' isSpecification = 'false'/>
</XMI.content>
</XMI>";
$xml = simplexml_load_string($XML);
$nameSpaces = $xml->getNameSpaces(TRUE);
var_dump($nameSpaces);
$a=$xml->{"XMI.content"};
$children = $a->children($nameSpaces['UML']);
var_dump($children->Model->attributes());
?>





