2010-10-22 5 views

Répondre

12

En utilisant simpleXML:

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

Sortie:

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

Soyez prudent. La valeur de $ xml-> file ['path'] n'est pas une chaîne. C'est une instance de SimpleXMLElement. – mellowsoon

+2

En effet. Cela peut causer des problèmes en comparant la valeur à une autre chaîne mais vous pouvez convertir cette valeur en une chaîne auparavant (chaîne) $ xml-> fichier ['chemin'] ' –

+0

merci les gars, exactement ce que je cherchais –

-1

vous pouvez utiliser PHP simple HTML DOM Parser , ceci est une bibliothèque php.http: //simplehtmldom.sourceforge.net/

+0

Pourquoi introduire une bibliothèque tierce lorsque les fonctionnalités intégrées sont plus que suffisantes pour cette tâche? – Phil

+0

C'est comme jquery, Très pratique – Sam

+1

Suggestions d'alternatives à [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) qui utilisent réellement [DOM] (http://php.net/manual/en/book. dom.php) au lieu de l'analyse des chaînes: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/fr/zend.dom .html), [QueryPath] (http://querypath.org/) et [FluentDom] (http://www.fluentdom.org). – Gordon

10

Pour le faire avec DOM vous

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

Vous pouvez aussi le faire avec XPath:

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

Ou comme une valeur de chaîne directement:

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

Vous pouvez chercher individuelle nœuds également en traversant manuellement le DOM

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

Marquer ce CW, parce que cela a été répondu avant plusieurs fois (juste avec des éléments différents), y compris moi, mais je suis trop paresseux pour trouver le doublon.

Questions connexes