Kapli Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) Okey så jeg har <?php $url = "http://armory.wow-europe.com/character-skills.xml?r=Dentarg&n=Kaplii"; $ch = curl_init(); $timeout = 30; $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_USERAGENT, $useragent); $data = curl_exec($ch); curl_close($ch); $xml = simplexml_load_string($data); ?> Men jeg klarer ikke å forstå hvordan jeg skal få ut infoen. Vil gjerne ha ut name og value fra skill inni skillCategory som har name Professions som er inni skillTab Har ikke funnet ut hva attribs() gjør men vet den må brukes. Det må bli $xml->characterInfo->character->skillTab-> osv i en foreach eller noe ahh forstår ingenting @_@ Edit: Okey jeg har fått til dette: foreach($xml->children() as $characterInfo) { foreach($characterInfo->children() as $character) { foreach($character->children() as $skillTab) { //echo $skillTab['key']; foreach($skillTab->children() as $skillCategory) { echo $skillCategory["name"] . " "; echo $skillCategory["value"] . "<br>"; } } } } Men hvis jeg bare vil ha de 2 første, hva gjør jeg da? Edit2: Altså XML'en ser sånn ut: http://pastebin.com/m5df9b897 Jeg vil ha name og value fra skill der hvor skillCategory key = "professions" Endret 25. juli 2008 av Kapli Lenke til kommentar
grimjoey Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 hva er output dersom du gjør dette? <?php $url = "http://armory.wow-europe.com/character-skills.xml?r=Dentarg&n=Kaplii"; $ch = curl_init(); $timeout = 30; $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_USERAGENT, $useragent); $data = curl_exec($ch); curl_close($ch); $xml = simplexml_load_string($data); print_r($xml); ?> Lenke til kommentar
Kapli Skrevet 25. juli 2008 Forfatter Del Skrevet 25. juli 2008 (endret) http://last-wish.org/armory.php Ut i fra det som kom opp da, burde ikke foreach($xml->skillCategory[0] as $skill) { echo $skill; } Funke da? Får invalid argument Endret 25. juli 2008 av Kapli Lenke til kommentar
grimjoey Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) hva skjer hvis du bytter ut: print_r($xml); med: $skills = $xml->xpath('skillCategory[@key="professions"]/skill'); $outString = ''; foreach ($skills as $k => $v) { $skills[$k] = $v->attributes(); $outString .= $skills[$k]['name'] . ' ' . $skills[$k]['value'] . "<br />\n"; } print $outString; Endret 25. juli 2008 av grimjoey Lenke til kommentar
Kapli Skrevet 25. juli 2008 Forfatter Del Skrevet 25. juli 2008 (endret) Warning: Invalid argument supplied for foreach() in /var/www/last-wish/phpbb3/armory.php on line 22 Line 22 er foreach 'en Hvis jeg var_dump($skills); så får jeg bool(false) Endret 25. juli 2008 av Kapli Lenke til kommentar
grimjoey Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) $skills = $xml->xpath('skillCategory[@key="professions"]/skill'); print_r($skills); jeg har endret koden underveis. sjekk at koden din har liten (lowercase) p i professions Endret 25. juli 2008 av grimjoey Lenke til kommentar
Kapli Skrevet 25. juli 2008 Forfatter Del Skrevet 25. juli 2008 Det gir ingenting :s Lenke til kommentar
grimjoey Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) oops. xpath tar vist nok ikke med attributter uansett.. ref php.net function searchXMLAttributes($attribute, $value, $object) { if (method_exists($object, 'attributes')) { $attributes = $object->attributes(); } if (isset($attributes)) { foreach ($attributes as $k = $v) { if (!strcmp($k, $attribute)) { if (!strcmp($v, $value)) return $object; } } } foreach ($object as $o) { return searchXMLAttribute($attribute, $value, $o); } } $skills = searchXMLAttributes('key', 'profession', $xml); print_r($skills); Endret 25. juli 2008 av grimjoey Lenke til kommentar
Kapli Skrevet 25. juli 2008 Forfatter Del Skrevet 25. juli 2008 (endret) Fortsatt ingenting, men jeg trodde xpath var når du skal ha det som ligger inni, altså ikke attributene Edit: Googla xpath, prøvde med $skills = $xml->xpath('/characterInfo/skillTab/skillCategory[@key=professions]/skill'); Forsatt ingenting :S EDIT: JO JO det funket hvis jeg fjernet / helt på starten så det ble $skills = $xml->xpath('characterInfo/skillTab/skillCategory[@key=professions]/skill'); ok nå må jeg bare teste dette med masse annet :D jeg skal reporte tilbake soonish tusen takk for hjelpen btw Endret 25. juli 2008 av Kapli Lenke til kommentar
grimjoey Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) årsaken er at xml'en har en <page> i rota. så det ikke med en gang på grunn av manglende crlf etter <?xml...?> taggen så dette bør også fungere: $xml->xpath('/page/characterInfo/skillTab/skillCategory[@key="professions"]/skill'); Endret 25. juli 2008 av grimjoey Lenke til kommentar
Kapli Skrevet 27. juli 2008 Forfatter Del Skrevet 27. juli 2008 Okey jeg har et lite problem. Her er XML'en http://pastebin.com/f4b4d120c Her er koden: http://pastebin.com/m1bd4dfb3 $talent1 er 0 $talent2 er 31 og $talent3 er 8 Jeg må finne det største av de 3 tallene, jeg prøver å gjøre det med max() , men det fungerer ikke fordi de ikke er integers, hvis jeg var_dump() en av dem så ser jeg at de er strings fra objektet. Og jeg kan jo ikke gjøre de om til integer med en (int) foran. Så spørsmålet er hvordan skal jeg få gjort de om til integers? Lenke til kommentar
grimjoey Skrevet 27. juli 2008 Del Skrevet 27. juli 2008 enten med intval($i) eller (int)$i bare sett (int) foran $xml... på linje 16, 17 og 18 eksempel: $string = '123'; $int = (int)$string; Lenke til kommentar
Kapli Skrevet 27. juli 2008 Forfatter Del Skrevet 27. juli 2008 Åh jeg er så dum, når jeg prøvde det før jeg postet så fikk jeg int(0) med var_dump. Og jeg trodde da at det ikke fungerte, men det var jo helt riktig siden tallet var jo 0 hehe. Takk for hjelpen igjen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå