2010-08-22 11 views
4

je ne peux pas le faire, ne sais pas whey. Comment puis-je obtenir la valeur d'un attribut appelé xlink: href d'un nœud xml en utilisant php. S'il vous plaît, s'il vous plaît, s'il vous plaît, quelqu'un me donne un petit coup de pouce. Je suis nouveau à phpComment puis-je obtenir la valeur d'un attribut appelé xlink: href d'un nœud XML en utilisant php

Ceci est le document XML

<?xml version="1.0" encoding="UTF-8"?> 
<topicMap id="1HLCM3FXT-28MTV0W-50" 
    xmlns="http://www.topicmaps.org/xtm/1.0/" xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <topic id="1HLCM7CDQ-21WQN9G-66"> 
     <instanceOf> 
      <subjectIndicatorRef xlink:type="simple" xlink:href="http://cmap.coginst.uwf.edu/#concept"/> 
     </instanceOf> 
     <baseName> 
      <baseNameString><![CDATA[feathers]]></baseNameString> 
     </baseName> 
     <occurrence> 
      <resourceRef xlink:type="simple" xlink:href="file:/./Birds_concept - about birds/feathers.txt"/> 
     </occurrence> 
    </topic> 
</topicMap> 

Répondre

2

Utilisez the DOM et one of the *NS functions, like getAttributeNS:

$doc = new DOMDocument(); 
$doc->loadXML($your_xml_string); 
$resource_refs = $doc->getElementsByTagName('resourceRef'); 
foreach($resource_refs as $rr) 
    print_r($rr->getAttributeNS('http://www.w3.org/1999/xlink', 'href')); 

(Ceci est du code non testé, le print_r pourrait ne pas fonctionner comme prévu getAttributeNS retourne. node list, chaque élément de la liste de nœuds sera an attribute La documentation de la page getAttributeNS a un autre exemple.)

+0

Merci pour la réponse très rapide je vais le tester dès que possible et signaler. J'ai aussi essayé xpath DOM, maintenant j'utilise simplexml. Je vais essayer ce code. merci encore beaucoup –

+0

HI je reçois cette erreur et je ne sais pas pourquoi Attention: DOMDocument :: loadXML() [domdocument.loadxml]: Début de balise attendue, '<' introuvable dans l'entité, ligne: 1 en C : \ xampp \ htdocs \ test.php sur la ligne 6 la ligne 6 est $ doc-> loadXML ('Birds.xml'); J'apprécie l'aide. Bravo –

+0

si je charge le fichier xml dans le $ doc-> loadXML ('Birds.xml'); c'est donner une erreur. mais si je copie tout le contenu des fichiers xml dans une variable $ stuff = 'tout le xml'; $ doc-> loadXML ($ stuff); cela fonctionne et me donne le résultat ..... il semble que depuis que je travaille j'ai eu ce problème –