테스트 사이트 - 개발 중인 베타 버전입니다

xml 파싱 질문입니다. 채택완료

꽁치입니다 2년 전 조회 1,909

</p>

<p><?php</p>

<p>if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p> </p>

<p>include_once('./_common.php');</p>

<p>



 </p>

<p>// ///////////////////////////////////     XML 요청 데이터를 생성합니다. //////////////////////////////////</p>

<p> </p>

<p>$roomNo = get_text($member['mb_id']);</p>

<p>$userNo = get_text($member['mb_nick']);</p>

<p>

 </p>

<p>// 요청 데이터를 생성합니다.</p>

<p>$requestData = '<?xml version="1.0"?></p>

<p><REQUEST001></p>

<p>  <YEAR>2022</YEAR></p>

<p>  <ROOM_NO>' . $roomNo . '</ROOM_NO></p>

<p>  <USER_NO>' . $userNo . '</USER_NO></p>

<p></REQUEST001>';</p>

<p> </p>

<p>// API 서버 URL을 설정합니다.</p>

<p>$url = '<a href="http://jdream.winsult.co.kr/xml/request.html';" target="_blank" rel="noopener noreferrer">http://jdream.winsult.co.kr/xml/request.html';</a></p>

<p> </p>

<p>// cURL 세션을 초기화합니다.</p>

<p>$ch = curl_init();</p>

<p> </p>

<p>// cURL 옵션을 설정합니다.</p>

<p>curl_setopt($ch, CURLOPT_URL, $url); // 요청할 URL 설정</p>

<p>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 결과 값을 반환받기 설정</p>

<p>curl_setopt($ch, CURLOPT_POST, true); // POST 요청 설정</p>

<p>curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData); // 요청 데이터 설정</p>

<p>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8')); // Content-Type 설정</p>

<p> </p>

<p>// cURL 실행 및 결과 값을 받습니다.</p>

<p>$result = curl_exec($ch);</p>

<p> </p>

<p>// cURL 세션을 종료합니다.</p>

<p>curl_close($ch);</p>

<p> </p>

<p>// 결과 값을 출력합니다.</p>

<p>echo $result;</p>

<p> </p>

<p>// 파싱된 데이터 출력</p>

<p>echo 'RESULT_CODE: ' . $xml_data->RESPONSE001->RESULT_CODE . '
';</p>

<p>echo 'RESULT_MSG: ' . $xml_data->RESPONSE001->RESULT_MSG . '
';</p>

<p>echo 'REQ_SEQ: ' . $xml_data->RESPONSE001->REQ_SEQ . '
';</p>

<p>echo 'RES_SEQ: ' . $xml_data->RESPONSE001->RES_SEQ . '
';</p>

<p>echo 'RESULT_DATA: ' . $xml_data->RESPONSE001->RESULT_DATA . '
';</p>

<p> </p>

<p>?></p>

<p>


echo $result; 하면 쭉~ 출력되는데,  필요데이터만 출력하려 하면, 아무것도 안 나옵니다.
어디가 잘못 됐는지????? 알려 주세요^^

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
핑크빈
2년 전

</p>

<p>$xml = simplexml_load_string($result);</p>

<p>$json = json_encode($xml);</p>

<p>$array = json_decode($json,TRUE);</p>

<p> </p>

<p>foreach($array['RESULTS'] as $name => $value)</p>

<p>{</p>

<p>    echo $name. '=>' . $value ."
";</p>

<p>}</p>

<p>echo 'TOT_CNT => '. $array['TOT_CNT'] ."
";</p>

<p> </p>

<p>foreach ($array['ACCOMMODATION_INFO'] as $key => $value) {</p>

<p>    if (is_array($value)) {</p>

<p>        foreach ($value as $sub_key => $sub_value) {</p>

<p>            echo "$key $sub_key => $sub_value
";</p>

<p>        }</p>

<p>    } else {</p>

<p>        echo "$key => $value
";</p>

<p>    }</p>

<p>}</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

textarea  내용이 그렇다면 저것이  어떤 형태로 치환되기를 원하시나요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

꽁치입니다
2년 전
따로 따로 분리해서 뿌려만 주면 됩니다. 항목별로 어떤 수치 인지만 보여 주기만 하면 됩니다.^^
꽁치입니다
2년 전
해결했습니다. 고맙습니다.

댓글을 작성하려면 로그인이 필요합니다.

 

echo "<textarea>".$result."</textarea>";

 

하면 textarea 안에 어떤 게 출력되나요?

<textarea> 안의 내용을 봐야 파싱방법을 알 수 있습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

꽁치입니다
2년 전
[code]
<?xml version="1.0" encoding="UTF-8"?>
<RESPONSE>
<RESULTS>
<RESULT>OK</RESULT>
<ERR_CD>E000</ERR_CD>
<ERR_MSG>정상처리</ERR_MSG>
<DATETIME>20230224151823</DATETIME>
</RESULTS>
<TOT_CNT>1</TOT_CNT>
<ACCOMMODATION_INFO>
<YEAR>2022</YEAR>
<ROOM_NO>801</ROOM_NO>
<USER_NO>2200039</USER_NO>
<OCCURRENCE>
<TOTALDAY>24.0</TOTALDAY>
<WEEKDAY>24.0</WEEKDAY>
<HOLYDAY>7.0</HOLYDAY>
<PEAKDAY>5.0</PEAKDAY>
</OCCURRENCE>
<USE>
<TOTALDAY>16.0</TOTALDAY>
<WEEKDAY>9.0</WEEKDAY>
<HOLYDAY>7.0</HOLYDAY>
<PEAKDAY>5.0</PEAKDAY>
</USE>
<REMAINING>
<TOTALDAY>8.0</TOTALDAY>
<WEEKDAY>8.0</WEEKDAY>
<HOLYDAY>0.0</HOLYDAY>
<PEAKDAY>0.0</PEAKDAY>
</REMAINING>
</ACCOMMODATION_INFO>
</RESPONSE>
[/code]

이렇게 나옵니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인