채택완료

xml 파싱 질문입니다.

2023-02-24 (금) 14:40:16 2,275
Copy
<?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개 / 댓글 3개

채택된 답변
+20 포인트
Copy
$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>";

    }

}
2023-02-24 (금) 15:21:55

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

답변에 대한 댓글 2개

2023-02-24 (금) 15:24:29
따로 따로 분리해서 뿌려만 주면 됩니다. 항목별로 어떤 수치 인지만 보여 주기만 하면 됩니다.^^
2023-02-24 (금) 16:07:43
해결했습니다. 고맙습니다.
2023-02-24 (금) 15:04:04

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

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

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

답변에 대한 댓글 1개

2023-02-24 (금) 15:19:31
[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]

이렇게 나옵니다.

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