2010-07-30 7 views
1

... eh bien, en fait j'avoir un objet qui ressemble à ceci:La combinaison des valeurs de 2 objets XML en PHP

object(AleParserXMLElement)#39 (4) { 
    ["name:private"]=> 
    string(6) "rowset" 
    ["data:private"]=> 
    object(SimpleXMLElement)#42 (2) { 
    ["@attributes"]=> 
    array(3) { 
     ["name"]=> 
     string(6) "skills" 
     ["key"]=> 
     string(6) "typeID" 
     ["columns"]=> 
     string(36) "typeID,skillpoints,level,unpublished" 
    } 
    ["row"]=> 
    array(185) { 
     [0]=> 
     object(SimpleXMLElement)#70 (1) { 
     ["@attributes"]=> 
     array(3) { 
      ["typeID"]=> 
      string(4) "3377" 
      ["skillpoints"]=> 
      string(6) "256000" 
      ["level"]=> 
      string(1) "5" 
     } 
     } 
     [1]=> 
     object(SimpleXMLElement)#23 (1) { 
     ["@attributes"]=> 
     array(3) { 
      ["typeID"]=> 
      string(5) "20342" 
      ["skillpoints"]=> 
      string(1) "0" 
      ["level"]=> 
      string(1) "0" 
     } 
     } 
     [2]=> 
     object(SimpleXMLElement)#9 (1) { 
     ["@attributes"]=> 
     array(3) { 
      ["typeID"]=> 
      string(5) "12096" 
      ["skillpoints"]=> 
      string(1) "0" 
      ["level"]=> 
      string(1) "0" 
     } 
     } 
     //etc. 
    } 
    } 
    ["children:private"]=> 
    NULL 
    ["rows:private"]=> 
    NULL 
} 

Et j'ai un fichier XML que vous pouvez voir ici:

link

Je voudrais afficher ces compétences à partir de mon premier objet, mais remplacer leurs valeurs typeID par typeName à partir de ce fichier xml.
Comme vous le supposez, je n'ai aucune idée du tout comment faire :) S'il vous plaît aider!

+0

Y a-t-il une raison pour laquelle vous ne pouvez pas créer un tableau assoc ou autre avec les valeurs que vous voulez? –

+0

Eh bien, oui, il y a une raison et c'est assez boiteux :) Je ne sais pas comment obtenir toutes les valeurs du fichier XML et cet objet que j'ai :) – errata

Répondre

3

Vous pouvez utiliser DOMDocuent et DOMXpath pour récupérer le nom. Une expression XPath comme //row[@typeID="ID HERE"]/@typeName fera:

$d = new DOMDocument; 
$d->load(...); 
$xp = new DOMXpath($d); 
$name = $xp->query('//row[@typeID="ID HERE"]/@typeName'); 
echo $name->item(0)->value; 

Quant à la façon dont vous faites votre remplacement, reportez-vous à la documentation de l'analyseur XML que vous utilisez (je vois un AleParser qui enveloppe un SimpleXMLElement là, mais ont aucune idée ce que c'est).

+0

Merci d'aider! Je ne sais vraiment pas sh ** sur ce truc XML et pour une raison quelconque, il est extrêmement confus pour moi :) Quoi que j'essaie, je reçois "Attention: DOMXPath :: query() [domxpath.query]: expression invalide dans .. ." Erreur! Ma requête ressemble à ceci: $ name = $ xp-> query ('string (// row [@typeID ='. $ Skill-> typeID. ']/@ TypeName') et $ skill-> typeID provient de foreach loop qui itére à travers mon objet ... AleParser est une bibliothèque API pour Eve-Online jeu - http://code-box.sk/software/ale.html – errata

+0

@errata Fixé maintenant – Artefacto

+0

Ah oui :))) Il fonctionne parfaitement :) Merci beaucoup! – errata