xml 파싱 질문입니다.

xml 파싱 질문입니다.

QA

xml 파싱 질문입니다.

답변 3

본문


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
 
include_once('./_common.php');

 
// ///////////////////////////////////     XML 요청 데이터를 생성합니다. //////////////////////////////////
 
$roomNo = get_text($member['mb_id']);
$userNo = get_text($member['mb_nick']);

 
// 요청 데이터를 생성합니다.
$requestData = '<?xml version="1.0"?>
<REQUEST001>
  <YEAR>2022</YEAR>
  <ROOM_NO>' . $roomNo . '</ROOM_NO>
  <USER_NO>' . $userNo . '</USER_NO>
</REQUEST001>';
 
// API 서버 URL을 설정합니다.
$url = 'http://jdream.winsult.co.kr/xml/request.html';
 
// cURL 세션을 초기화합니다.
$ch = curl_init();
 
// cURL 옵션을 설정합니다.
curl_setopt($ch, CURLOPT_URL, $url); // 요청할 URL 설정
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 결과 값을 반환받기 설정
curl_setopt($ch, CURLOPT_POST, true); // POST 요청 설정
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData); // 요청 데이터 설정
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8')); // Content-Type 설정
 
// cURL 실행 및 결과 값을 받습니다.
$result = curl_exec($ch);
 
// cURL 세션을 종료합니다.
curl_close($ch);
 
// 결과 값을 출력합니다.
echo $result;
 
// 파싱된 데이터 출력
echo 'RESULT_CODE: ' . $xml_data->RESPONSE001->RESULT_CODE . '<br>';
echo 'RESULT_MSG: ' . $xml_data->RESPONSE001->RESULT_MSG . '<br>';
echo 'REQ_SEQ: ' . $xml_data->RESPONSE001->REQ_SEQ . '<br>';
echo 'RES_SEQ: ' . $xml_data->RESPONSE001->RES_SEQ . '<br>';
echo 'RESULT_DATA: ' . $xml_data->RESPONSE001->RESULT_DATA . '<br>';
 
?>


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

이 질문에 댓글 쓰기 :

답변 3


$xml = simplexml_load_string($result);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
 
foreach($array['RESULTS'] as $name => $value)
{
    echo $name. '=>' . $value ."<br>";
}
echo 'TOT_CNT => '. $array['TOT_CNT'] ."<br>";
 
foreach ($array['ACCOMMODATION_INFO'] as $key => $value) {
    if (is_array($value)) {
        foreach ($value as $sub_key => $sub_value) {
            echo "$key $sub_key => $sub_value<br>";
        }
    } else {
        echo "$key => $value<br>";
    }
}

 

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

 

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

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


<?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>


이렇게 나옵니다.

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 149
© SIRSOFT
현재 페이지 제일 처음으로