Las expresiones regulares no creo que sean la mejor forma de hacerlo, teniendo métodos para esto. Un par de ejemplos "básicos".
DOMDocument
Código PHP:
Ver original<?php
$doc = new DOMDocument();
$doc->loadXML($xml);
$dom_pa = new DOMXPath($doc);
$dom_pa->registerNamespace('d', $doc->lookupNamespaceUri('domain'));
$resultado = $dom_pa->query('//d:contact');
echo $contacto1 = $resultado->item(0)->nodeValue . '<br />';
echo $contacto2 = $resultado->item(1)->nodeValue;
SimpleXMLElement
Código PHP:
Ver original$sp = new SimpleXMLElement($xml);
$ns = $sp->getNamespaces(true);
$sp->registerXPathNamespace('d', $ns['domain']);
$contacto = $sp->xpath('//d:contact');
echo $contacto[0] . '<br />';
echo $contacto[1];
En el caso de querer los atributos usas getAttribute con DOMDocument o attribute con SimpleXML. Saludos