방프리
20.06.30 Unity에서 HTML 코드 파싱하기 본문
회사에서 사이트 내에 있는 HTML 코드로 된 게시글 코드를 받아 파싱해 Unity에서 나오는 것을 요구했다.
문자열로 파싱하는 방법을 처음에 생각해보았으나, 시간 대비 그리고 이것저것 속성 값이 들어간다면 꽤나 까다로운
코딩이 될 것 같았다.
이리저리 찾아본 결과 C# Nuget Package에서 HtmlAgility 라는 dll을 통해 HTML 코드를 파싱하는 방법이 있었다.
이걸 Unity로 어떻게 옮기는냐가 관건이었는데 HtmlAgility가 Mono 컴파일러에서도 동작이 되는지가 문제였다.
일단 테스트로 Plugins 폴더에 넣어봤더니 정상적으로 동작했다.
하지만 Unity Forum에서는 따로 dll로 작성하여 포함하는 것을 적극 권장하였다.
이제 넣었으니 사용해야하는데... 어떻게 사용할까?
의외로 이 부분에 대해서는 한글로 된 자료가 별로 없었다. 사실 Unity에서 이걸 거의 쓸 일이 없기 때문에 당연하다고
생각된다.
두 가지 방식이 있는데 첫 번째로는 url을 통해 해당 사이트에 있는 HTML 코드를 가져와 파싱하는 방법과
두 번째 방법은 이미 가지고 있는 HTML 코드를 파싱하는 방법이다. 나의 경우엔 후자였기 때문에
WebClient를 통해 HTML 코드를 가져오는 건 생략한다.
파싱 하는 것도 여러 방법이 있는데 순차적, 예를 들어서 XML 코드처럼 되어 있는 HTML 코드를 파싱하려면
DocumentNode.SelectSigleNode("tagName")을 적극 사용해서 파싱하는 방법이 있고,
하나의 문자열로 된 코드를 파싱한다면 DescendantNodes()를 통해 태그별로 파싱하는 방법도 있다.
위의 코드처럼 linq를 통해 자르고자 하는 tag의 Attribute값을 통해 쿼리를 생성할 수도 있다.
좀 더 찾아본다면 이걸 더 효율적으로 활용할 수 있는 방법이 꽤나 많겠으나...
위의 방법만으로도 부가적인 코드를 좀 더 추가한다면 굳이 더 알 필요가 없지 않을까 싶다.
(Stack overflow에도 나와있는 대다수의 코드들도 대부분 Linq를 활용한 코드들이 대부분이었다.)
'GameEngine > UnityEngine' 카테고리의 다른 글
20.10.26 C#을 이용한 AWS S3 Bucket 파일 업로드 (0) | 2020.10.27 |
---|---|
20.07.08 Mixed Reality Tool Kit 개발 기록.... (0) | 2020.07.08 |
20.03.17 List 자료구조 안에 Transform 정리하기 (0) | 2020.03.17 |
20.02.13 Unity와 Git 연동하기 (3) | 2020.02.13 |
Unity2D 게임 포트폴리오 개발 일지 D + 6 (0) | 2020.02.02 |