2010-06-21 9 views
0

je les données XML suivant qui est généré par un webservicePHP lire les propriétés XML

<?xml version="1.0" encoding="UTF-8"?> 
<rsp xmlns="http://worldcat.org/xid/isbn/" stat="ok"> 
     <isbn oclcnum="263710087 491996179 50279560 60857040 429386124 44597307" lccn="00131084" form="AA BC" year="2002" lang="eng" ed="1st American ed." title="Harry Potter and the goblet of fire" author="J.K. Rowling." publisher="Scholastic Inc." city="New York [u.a.]" url="http://www.worldcat.org/oclc/263710087?referer=xid">9780439139601</isbn> 

</rsp> 

Je dois lire les données dans la balise « isbn », plus précisément, la valeur de la propriété « title » . Comment ferais-je cela en PHP.

Merci

Répondre

0

J'ai résolu ce problème moi-même.

$xmldata= file_get_contents("http://xisbn.worldcat.org/webservices/xid/isbn/9780439139601?method=getMetadata&format=xml&fl=*"); 
$xml= new SimpleXMLElement($xmldata); 
print $xml->isbn[0]['title']; 
+2

cela dépend du nombre de balises isbn que vous avez dans votre xml .. $ xml-> isbn [0] ['title']; ne vous obtiendra que le titre du premier élément d'étiquette isbn. Je pense que vous devriez utiliser quelque chose comme Gordon suggéré. – Youssef

4

Avec DOM

$dom = new DOMDocument; 
$dom->load('books.xml'); // or from URL  
foreach($dom->getElementsByTagName('isbn') as $node) { 
    echo $node->getAttribute('title'); 
} 

Avec SimpleXml:

$sxe = simplexml_load_file('filename.xml'); // or from URL 
foreach($sxe->isbn as $node) { 
    echo $node['title']; 
} 

Just my 2c pourquoi vous voulez utiliser DOM: SimpleXML paraît simple en effet, mais la simplicité dans ce cas, le manque de contrôle . DOM n'est pas beaucoup plus difficile à utiliser et peut faire plus. DOM is an Interface Standard defined by the W3C et peut être trouvé implémenté dans de nombreuses langues, il est donc utile de connaître l'API. Certes, il pourrait être un peu plus verbeux que SimpleXML, mais il est également plus puissant. Si vous avez travaillé avec DOM pendant un certain temps, vous ne voulez pas y retourner.