13주차_참고 : dataTime 태그에서 측정 일시 추출 - dhryu60/SmartDevice_2025-1 GitHub Wiki
i = line.indexOf("</dataTime>");
if (i > 0) {
tmp_str = "<dataTime>";
dateNtime = line.substring(line.indexOf(tmp_str) + tmp_str.length(), i);
Serial.println(dateNtime);
}
- 이 코드는 HTTP 응답의 한 줄(
line
)에서<dataTime>
태그로 감싸진 데이터(예: 측정일시)를 추출하기 위해 작성되었다. -
<dataTime>2025-05-30 14:00</dataTime>
형태의 문자열 중에서2025-05-30 14:00
부분을 추출한다.
-
line
문자열에서"</dataTime>"
이라는 서브스트링(문자열 조각)을 찾아, 그 시작 인덱스(첫 글자 위치)를 반환한다. - 찾지 못하면
-1
을 반환. - 찾았다면
i
는</dataTime>
의 첫 글자의 위치(즉, 끝태그의 시작 위치).
-
"</dataTime>"
가 발견된 경우에만 아래 코드를 실행하도록 조건을 설정. - 찾지 못하면 (
i == -1
) 블록을 건너뜀.
- 추출할 시작 태그를 문자열 변수
tmp_str
에 저장.
-
line.indexOf(tmp_str)
:"<dataTime>"
의 시작 위치를 찾음. -
+ tmp_str.length()
:"<dataTime>"
의 끝 위치 바로 다음부터 문자열 추출 시작. -
i
:"</dataTime>"
의 시작 위치까지 추출. - 결과적으로
<dataTime>
과</dataTime>
사이의 문자열(즉, 날짜/시간 데이터)만 추출하여dateNtime
에 저장.
- 추출된 문자열(
dateNtime
)을 시리얼 모니터에 출력. - 예:
2025-05-30 14:00
-
line 문자열:
"<dataTime>2025-05-30 14:00</dataTime>"
-
i = line.indexOf("</dataTime>")
→31
(끝태그 시작 위치) -
line.indexOf("<dataTime>")
→0
-
tmp_str.length()
→10
-
dateNtime = line.substring(0 + 10, 31)
→"2025-05-30 14:00"
이 코드는 한 줄의 응답 문자열(line
)에서:
- 특정 태그(
dataTime
)로 둘러싸인 데이터를 찾아내어 - 해당 데이터만 깔끔하게 잘라내어(
substring()
) - 추출된 데이터를 시리얼 모니터에 출력하도록 한다.