2012-06-29 3 views
0

맞아, XML을 사용한 첫 날입니다. 나는 XML을 만들지 않고 누군가가 나에게 URL을 보내고 PHP를 사용하여 뭔가를해야한다.XML에서 데이터 액세스

$url = "http://www.MyURL.blah"; 

$string = file_get_contents($url); 

$xml = simplexml_load_string($string); 

echo $xml->getName(); 

이 단어 '응답'에코 ...

<response> 
<query id="1"> 
<results> 
    <item> 
     <id>GZ7w39jpqwo</id> 
     <rank>1</rank> 
     <explanation>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla a massa lectus, sed convallis sapien. Curabitur sem mauris, ullamcorper ut. </explanation> 
    </item> 
    <item> 
     <id>hfMNRUAwLVM</id> 
     <rank>2</rank> 
     <explanation>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla a massa lectus, sed convallis sapien. Curabitur sem mauris, ullamcorper ut. </explanation> 
    </item> 
    <item> 
     <id>I_cxElavpS8</id> 
     <rank>3</rank> 
     <explanation>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla a massa lectus, sed convallis sapien. Curabitur sem mauris, ullamcorper ut. </explanation> 
    </item> 
</results> 
</query> 
</response> 

그래서, 그래, 이것은 내가 지금까지 알아 냈어요 무엇 :이 같은 XML 구조는 모습입니다. 예,가요! 그래서 지금 어떻게 도대체 당신은 각 항목의 ID, 순위 및 설명을 얻습니까? 위의 3 개 항목 만 게시했습니다. 실제로이 약 50

+0

왜이 작동하지 않습니다 : $ string = file_get_contents ($ url); $ xml = simplexml_load_string ($ string); foreach ($ xml as $ row) { echo $ row-> rank. '
'; } – AzzyDude

답변

0

이 예제는 DOMDocument를 사용하여 도움이 될 수 있습니다.

$document = new DOMDocument(); //Creates a new DOM Document (used to process XML) 
$document->loadXML($fileContents); //Load the XML file from an string 
$resultsNode = $document->getElementsByTagName("results")->item(0); //Get the node with the results tag 
foreach($resultsNode->childNodes as $itemNode) //Get each child node (item) and process it 
{ 
    foreach($itemNode->childNodes as $unknownNode) //Get each child node of item and process it 
    { 
     if($unknownNode->nodeName == "id") //Check if it's the dessired node 
     { 
      $this->id = $unknownNode->value; //Assign the value of the node to a variable 
     } 
     if($unknownNode->nodeName == "rank") 
     { 
      $this->rank = $unknownNode->value; 
     } 
     if($unknownNode->nodeName == "explanation") 
     { 
      $this->explanation = $unknownNode->value; 
     } 
    } 
} 
+0

...이 코드에서 어떤 일이 벌어지고 있는지 전혀 알지 못합니다. – AzzyDude

+0

@AzzyDude 요구 사항에 맞게 수정 됨 – Rafael

0
foreach($xml->xpath('/results')->children() as $child) 
{ 
    $mystuff = $child->getChildren(); 
    $id = $mystuff[0]; 
    $rank = $mystuff[1]; 
    $explanation = $mystuff[2]; 
} 

뭔가. SimpleXMLElement object에 대한 PHP 문서를 참조하십시오.

관련 문제