2010-06-05 7 views
1

Je fais une requête get en PHP mais l'analyseur rencontre des problèmes. Je cherche un moyen de récupérer la valeur de l'URL dans l'exemple suivant. La réponse xml ressemble à ceci.PHP XML Parsing

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 
<testtemplate JobName="test1"> 
<Sources> 
<Source xmlns="http://www.microsoft.com/test/schema/api"> 
    <System> 
     <SystemIdentifier>HTTPS</SystemIdentifier> 
     <URL>http://example.com</URL> 
    </System> 
</Source> 
</Sources> 
<testtemplate> 

et mon code PHP ressemble à ceci:

$xml = DOMDocument::LoadXML($response); 
$mypath = new DOMXPath($xml); 
$mypath->registerNamespace("a", "http://www.microsoft.com/test/schema/api"); 

$url = $mypath->evaluate("/testtemplate/Sources/Source/System/URL"); 
$message = $url->item(0)->value; 

print($message); 

Toute aide serait appréciée.

Merci Ashish

+1

Quels sont les "problèmes" qu'il rencontre? – Amber

Répondre

2

Votre exemple XML est malformé (le testtemplate n'est pas fermé), en supposant que est juste une faute de frappe permet de passer à la fixation de votre question principale.

Vous aurez besoin d'utiliser cet espace de nom qui a été enregistré afin de pouvoir accéder aux éléments à l'intérieur, et le DOMElement item(0) n'a pas une value propriété (nodeValue est utilisé à la place).

$xml = DOMDocument::LoadXML($response); 
$mypath = new DOMXPath($xml); 
$mypath->registerNamespace("a", "http://www.microsoft.com/test/schema/api"); 

// These two lines have changed, slightly. 
$url = $mypath->evaluate("/testtemplate/Sources/a:Source/a:System/a:URL"); 
$message = $url->item(0)->nodeValue; 

print($message);