Cómo extraer un atributo de nodo de XML usando el analizador DOM de PHP

Nunca he usado realmente el analizador DOM antes y ahora tengo una pregunta.

¿Cómo voy a extraer la URL de este marcado?

   

Usando simpleXML:

 $xml = new SimpleXMLElement($xmlstr); echo $xml->file['path']."\n"; 

Salida:

 http://www.thesite.com/download/eysjkss.zip 

Para hacerlo con DOM lo haces

 $dom = new DOMDocument; $dom->load( 'file.xml' ); foreach( $dom->getElementsByTagName( 'file' ) as $file ) { echo $file->getAttribute( 'path' ); } 

También puedes hacerlo con XPath:

 $dom = new DOMDocument; $dom->load( 'file.xml' ); $xPath = new DOMXPath( $dom ); foreach( $xPath->evaluate( '/files/file/@path' ) as $path ) { echo $path->nodeValue; } 

O como un valor de cadena directamente:

 $dom = new DOMDocument; $dom->load( 'file.xml' ); $xPath = new DOMXPath( $dom ); echo $xPath->evaluate( 'string(/files/file/@path)' ); 

También puede buscar nodos individuales atravesando el DOM manualmente

 $dom = new DOMDocument; $dom->preserveWhiteSpace = FALSE; $dom->load( 'file.xml' ); echo $dom->documentElement->firstChild->getAttribute( 'path' ); 

Marcando este CW, porque esto ha sido respondido varias veces (solo con diferentes elementos), incluyéndome a mí, pero soy demasiado flojo para encontrar el duplicado.

puede usar PHP Simple HTML DOM Parser, esta es una biblioteca php.http: //simplehtmldom.sourceforge.net/