글

라벨이 xml인 게시물 표시

Windows Free XML Editor - MS XML Notepad 2007

이미지
 게임이든 앱에 쓰이는 데이터는 일반적으로 엑셀을 가지고 RAW한 원본 데이터 만든 후 XML 또는 기타 자체 바이너리 포맷으로 만드는 과정을 거치게 되죠. 요즘에는 중간단계의 데이터든 최종 데이터든 JSON도 많이 쓰이는 것 같습니다.  아무튼 이런 일련의 과정없이 바로 XML을 쉽게 만들어 편집할 수 있는 에티팅 툴을 하나 소개 해볼까 합니다. 바로 MS에서 만든 XML Notepad 2007인데요, 물론 소개할 툴 대신 텍스트 편집기 같은 것을 대용해도 되지만 자동 태그 입력이라던지 이런 XML 에디팅에 특화된 툴을 사용하는게 더 생산성에 도움이 되겠죠. 저도 몇년전부터 애용하던 것입니다. 윈도우에서만 쓸 수 있는게 아쉽긴하지만 이만한게 없네요.   마이크로소프트의 다운로드 센터 에서 XML Notepad 2007을 다운로드 합니다. MS에서 2007로도 충분하다고 생각?했는지 더 최신 버전은 없고 2007이 마지막이네요.  다운로드한 파일을 실행하면 설치 마법사가 보입니다. Next를 클릭합니다.  라이센스를 동의한 후 Next를 클릭합니다.  설치 옵션은 딱히 바꿀것이 없고 설치 위치를 지정 후 Next를 클릭합니다.  설치 준비되었습니다. Install을 클릭합니다.  설치중입니다.  설치가 완료되었습니다. Finish를 클릭합니다.  실행해보면 이렇게 트리뷰에서 XML의 각 Element나 Attribute를 확인 및 수정 편집이 가능합니다.  XSL로도 확인할 수 있습니다.  마우스 우클릭을 하거나 Insert 메뉴를 통해서 각종 XML 요소를 추가할 수 있습니다. 엑셀을 XML로 Export 해주는 플러그인 ExcelExportXML XML 파서 종류  위 포스팅과 같이 보시면 좋을 듯 하네요.  다음에는 오픈소스 크로스 플랫폼 ...

엑셀을 XML로 추출해보자. ExcelExportXML

이미지
 이번 포스팅도 지난 2012년 6월에 했던걸 정리해봅니다.  일반적으로 게임을 만든다고 하면 기획 데이터 원본은 엑셀로 작성들하시죠? 다음 공정은 회사나 팀마나 다르겠죠. 간단하게 제 경우를 소개하자면, 전전 회사는 엑셀 -> txt -> 자체 Binary 포멧이었고 전회사는 엑셀 -> Lua 였습니다. 둘다 원본 데이터를 정해진 타입과 형식에 따라 처리했다고 했을 때 장단점이 있겠죠.  첫번째로 자체포맷을 했을 때는 데이터를 마음데로 커스터마이징 한다던지, 서버 클라 데이터를 나눠 클라의 경우 꼭 필요한 데이터만 가지고 있을 수 있게 할 수 있었습니다. 단점으로 커스터마이징 관련해서 너무 툴과 관련 구조체의 유지보수가 힘들었던게 있었죠.  두번째로 처음 시도해보는 것 이었는데 루아 자체를 데이터로 처리하는 방식이었죠. 루아 테이블이나 변수가 바로 기획 정적 데이터라는 개념으로 썼기 때문에 어찌보면 편했던 것도 있습니다. 또한 엑셀을 바로 lua로 익스포트 해주는 툴 하나만 있었기 때문에 유지보수도 괜찮았죠. 속도야 LuaJit 으로 하면 될 것 같았는데 문제는 루아를 데이터로 로딩하다보니 메모리를 무지 많이 먹더군요. 제 기억으로 일반 데이터 대비 3배는 넘었던걸로 기억이... 좋은 경험한거죠뭐...  잡설이 길었네요. 이렇게해서 이번에는 노멀하게 가기로 하고 엑셀을 바로 XML로 익스포트해서 사용하기로 했습니다. XML을 기획 정적 데이터로 쓰는것이죠. 본론으로 들어가기에 앞서 엑셀로 XML 저장을 시도해봤던 것을 정리하자면,  Excel 2010인데 기본적으로 다른이름으로 저장에서 XML 데이터로 저장하려고 하면 위와 같이 '통합 문서에 XML 매핑이 없기 때문에 XML 데이터를 저장할 수 없습니다.' 라고 뜨면서 저장이 안되더군요. 될줄 알았는데....구글링으로 해결책? 을 찾은 것 같긴한데 해보지는 않았습니다.   해결책 링...

간단한 XML 소개와 XML 파서 종류

데이터 구조가 잡히기 전 임시? 데이터 파일용으로 xml을 사용하려고 합니다. 뭐 만들어두면 간단한 설정파일등에 사용도 가능하구요. 기존에 잘 썼던 TinyXml을 쓸까 하다가 MSXml과 XmlLite등 다른 것들도 포착이 되네요. 세부적으로 프로그래밍 API까진 아니고 간단하게 리서치 한 내용을 포스팅 해봅니다. XML 파싱 방식 SAX(Simple API for XML)와 DOM(Document Object Model)이 있습니다. SAX(Simple API for XML) XML문서 구성요소를 읽어 들일때마다 이벤트로 처리해 주기 때문에 대용량 처리에 적합하고 빠르고, 대용량 문서나 많은 문서를 처리할 때 적절합니다. 단점으로는 읽어낸 데이터를 다시 이용할 수 없어 재활용하려면 자료구조를 따로 만들어줘야 합니다. DOM(Document Object Model) 각각의 구성요소를 객체로 모델링화해서 객체가 가진 속성과 메소드를 통해 문서의 구조와 데이터를 다룰 수 있도록 W3C가 국제표준으로 제안한 XML 프로그래밍 인터페이스입니다. XML 문서를 해석하여 DOMTree형태로 메모리에 올립니다. 해서 자료구조를 가지고 있어서 데이터를 바로 읽고 수정뿐 아니라 노드 추가등의 작업도 가능합니다. SAX보단 느립니다. XML 관련 모듈 TinyXml DOM 방식 UTF-8 파싱을 지원하지만 기본적으로 유니코드로 컴파일이 안된다. UTF-8로 된 파일에서 한글을 읽을 때 MultiByteToWideChar에 CP_UTF8옵션으로 읽을 것. UTF-16미지원 MSXML DOM 방식. COM. SAX도 지원하는듯. MSXML버젼 때문에 정상적으로 파싱 하지 못하는 경우가 발생할 수 있다. 별도 MSXML 배포버젼이 있지만 일반적으로 유저들은 IE를 설치할 때 같이 배포된 MSXML을 사용하기 때문에 사용자의  IE버젼과 OS버젼에 따라 이런 경우가 발생한다. 이걸로 개발하면 유저들도...