다음 PHP 코드 : 나는 그것에을 기대하는 것처럼SimpleXML을하고 PHP XPath 식은 올바른 데이터를 반환하지
<html>
<?php
$name = Secrezy;
$server = Sunstrider;
$raidurl='http://eu.wowarmory.com/character-achievements.xml?r='.$server.'&cn='.$name.'&c=168';
print_r($raidurl); // This is to check if the link is valid. Follow the link printed here and you should find a valid XML page
echo "<br>";
$xmlraid = simplexml_load_file($raidurl);
$achievement = array($xmlraid->xpath("/category/achievement[@id='4602']"));
print_r($achievement);
?>
</html>
가 작동하지 않습니다. $ achievement에 다음을 채워서는 안됩니다.
<achievement categoryId="168" dateCompleted="2010-03-26T00:01:00+01:00" desc="Complete the 10-player raid achievements listed below." icon="inv_helmet_74" id="4602" points="25" reward="Reward: Bloodbathed Frostbrood Vanquisher" title="Glory of the Icecrown Raider (10 player)">
대신 빈 배열이 나타납니다.
다음은 페이지의 전체 URL http://eu.wowarmory.com/character-achievements.xml?r=Sunstrider&cn=Secrezy&c=168
감사합니다!
편집 : xpath를/achievements/category/achievement [@ id = '4602']로 변경 한 후 완전히 빠진 모든 것이 잘 작동합니다. 고마워. 그러나이를 원래 코드로 구현하면 여전히 예상대로 작동하지 않습니다. 끔찍한 일을하고 있다고 확신합니다. 도움을 주셔서 감사합니다. xmlraid의 위해서 var_dump 만이 ($ 난으로 인해 다수의 많은 시간) 생산하고
<?php
echo "<html>
<head>
<title>ARMORY.</title>
<meta http-equiv='Content-Type' content='text/html' charset=iso-8859-1>
</head>
<body>
<table width='50%' border='1' cellpadding='10' cellspacing='10'>";
ini_set("user_agent", "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8");
$server = "Sunstrider";
$guild = "Operation+Eskimo";
$url='http://eu.wowarmory.com/guild-info.xml?r='.$server.'&gn='.$guild;
$xml = simplexml_load_file($url);
$array = array();
foreach($xml->guildInfo->guild->members->character as $char)
if(strtolower($char['level']) === '80')
{
$array[] = $char['name']."<br />";
}
$i = 0;
while($array[$i] != null)
{
$name = $array[$i];
$raidurl='http://eu.wowarmory.com/character-achievements.xml?r='.$server.'&cn='.$name.'&c=168';
$xmlraid = simplexml_load_file($raidurl);
var_dump($xmlraid);
echo "<br><br>";
$achievement = array($xmlraid->xpath("/achievements/category/achievement[@id='4602']"));
$i++;
}
?>
</body>
</html>
:
object(SimpleXMLElement)#3 (2) { ["@attributes"]=> array(2) { ["lang"]=> string(5) "en_us" ["requestUrl"]=> string(27) "/character-achievements.xml" } ["category"]=> object(SimpleXMLElement)#2 (1) { ["category"]=> array(12) { [0]=> object(SimpleXMLElement)#5 (0) { } [1]=> object(SimpleXMLElement)#6 (0) { } [2]=> object(SimpleXMLElement)#7 (0) { } [3]=> object(SimpleXMLElement)#8 (0) { } [4]=> object(SimpleXMLElement)#9 (0) { } [5]=> object(SimpleXMLElement)#10 (0) { } [6]=> object(SimpleXMLElement)#11 (0) { } [7]=> object(SimpleXMLElement)#12 (0) { } [8]=> object(SimpleXMLElement)#13 (0) { } [9]=> object(SimpleXMLElement)#14 (0) { } [10]=> object(SimpleXMLElement)#15 (0) { } [11]=> object(SimpleXMLElement)#16 (0) { } } }
내가 PHP 매우 새로 온 것을 추가해야합니다 그래서 내 코드가 잘되지 않습니다.
나는 완전히 다른 태그를 얻고있다. (클래스 이름을 가진 div). 거기에 뭔가를 사용하려고하는 XML을보기 위해 보내야 할 것이 있습니까? – Wrikken
@Wrikken : 어느 브라우저를 사용하십니까? XSL 스타일 시트가 자동으로 적용될 수 있습니다. Firefox 3.6에서 소스를 보면 XML을 볼 수 있습니다. –
Hmmm, nope (opera), XSL을 사용할 수 있습니다. 그러나 FF로 시도해 보겠습니다. – Wrikken