2016-08-04 4 views
0

웹 및 stackoverflow 아카이브를 검색했지만 실제로이 문제를 해결하는 데 도움이되는 내용을 찾지 못했습니다.XML에서 특정 항목 가져 오기

나는 다음과 같은 XML 파일

<?xml version="1.0"?> 
<Results> 
    <Result> 
    <Step>001</Step> 
    <State>1</State> 
    <Complete>true</Complete> 
    </Result> 
    <Result> 
     <Step>002</Step> 
     <State>1</State> 
     <Complete>true</Complete> 
    </Result> 
    <Result> 
     <Step>003</Step> 
     <State>1</State> 
     <Complete>false</Complete> 
    </Result> 
</Results> 

을하고 난 단계의 도움으로 전체의 가치를 얻을 싶어요. PARAM는 예를 들어, 입력 된 단계는 그러니까 기본적으로, 클라이언트가 getSuccess를 호출 (PARAM) . 그런 다음이 특정 Array (또는 Result 트리)의 값을 가져 오려고합니다. 내 코드는 지금

public function getSuccess($step){ 

    $doc = new DOMDocument('1.0'); 
    $doc->formatOutput = true; 
    $doc->Load("./API/response.xml"); 

    // Borat: >>Great Success!<< 
    $Borat = $doc->getElementsByTagName('Result'); 
    foreach ($Borat as $Result) { 
     ########### 
     #CODE HERE# 
     ########### 
    } 
} 

지금 에 정확한 코드를 찾고은 결과를 에코이 권리처럼 보인다.

미리 감사드립니다. 그리고 내 문제를 해결하는 주제가 있다면 알려 주시기 바랍니다. 나는이 문제를 마무리 할 것입니다. 그 길을 갈 경우

+0

시도해 볼 수 있습니까? [simplexml_load_file] (http://php.net/manual/en/functionsimplexml-load-file.php) – chirag

+0

응답 해 주셔서 감사합니다. 단계를 완료하고 완료 할 수 있지만 "단계 완료 = $ 단계를 완료하십시오. 결과 " – d0ve

+0

예, foreach에 'IF'조건을 넣어서이 작업을 수행 할 수 있습니다. Plz 예를 들어 내 대답을 확인하십시오. – chirag

답변

3

IF 조건에서 단계를 비교하고 원하는 XML 노드를 얻을 수 있습니다.

예 : 여기에 '주'노드가 표시됩니다.

function getSuccess($step) { 

    if (file_exists("./response.xml")) { 
     $xml = simplexml_load_file("./response.xml"); 

     foreach ($xml as $Result) { 

      if ($step == $Result->Step) { 
       $State = $Result->State; 
       return $State; 
      } 
     } 
    } else { 
     exit('Failed to open test.xml.'); 
    } 

} 

echo getSuccess('001'); 

희망이 있습니다.

+0

고마워요. 제가 찾고 있던 것이 었습니다. – d0ve

3

는 몰라하지만 당신은 시도 할 수 있습니다이 :

public function getSuccess($step) 
{ 
    $xml_string = file_get_contents("./API/response.xml"); 
    $xml_data = new SimpleXMLElement($xml_string); 

    // Search for the parent bij $step 
    $nodes = $xml_data->xpath('//Results/Result/Step[.="'.$step.'"]/parent::*'); 
    return $nodes[0]; 
} 

$Result = getSuccess('002'); 
print_r($Result); 

를 출력합니다 : SimpleXMLElement 오브젝트 ([단계] => 002 [국가] => 1 [완료] => true)

+0

가 작동하지 않는 것 같아서 결과가 돌아 오지 않습니다./ – d0ve

+0

print_r ($ Result)을 사용할 때 이상합니다. SimpleXMLElement 객체 ([Step] => 002 [State] => 1 [Complete] => true) – Raymond

+0

내 실수는, 지금, 고마워! – d0ve