Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tinyxml — CVE-2021-42260 및 CVE-2023-34194 수정 사항이 포함된 TinyXML 2.6.2 | Kitploit
도구/GitHubGitHub/vm2mv/tinyxml
General Purpose UtilitiesStatic AnalysisCode AnalysisUtilities & Frameworks
GitHubvm2mv/tinyxml

tinyxml

CVE-2021-42260 및 CVE-2023-34194 수정 사항이 포함된 TinyXML 2.6.2

저장소 보기웹사이트
11년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

/** @mainpage

TinyXML

TinyXML은 다른 프로그램에 쉽게 통합할 수 있는 단순하고 작은 C++ XML 파서입니다.

기능

간단히 말해, TinyXML은 XML 문서를 파싱하여 읽고, 수정하고, 저장할 수 있는 DOM(Document Object Model)을 구축합니다.

XML은 "eXtensible Markup Language"의 약자입니다. XML을 사용하면 자신만의 문서 마크업을 만들 수 있습니다. HTML이 브라우저용 문서를 마크업하는 데 아주 훌륭한 역할을 하는 반면, XML은 예를 들어 일정 관리 애플리케이션용 "할 일(to do)" 목록을 설명하는 문서와 같은 모든 종류의 문서 마크업을 정의할 수 있게 해줍니다. XML은 매우 구조화되고 편리한 형식입니다. 애플리케이션 데이터를 저장하기 위해 만들어졌던 그 모든 임의의 파일 형식은 XML로 대체될 수 있습니다. 모든 것을 위한 하나의 파서입니다.

완전하고 정확하며 솔직히 읽기 어려운 사양에 대한 가장 좋은 자료는 http://www.w3.org/TR/2004/REC-xml-20040204/에 있습니다. XML에 대한 입문서(제가 정말 좋아하는)는 http://skew.org/xml/tutorial에서 찾을 수 있습니다.

XML 데이터에 접근하고 상호 작용하는 방법에는 여러 가지가 있습니다. TinyXML은 DOM(Document Object Model)을 사용합니다. 즉, XML 데이터가 탐색하고 조작할 수 있는 C++ 객체로 파싱된 다음 디스크나 다른 출력 스트림에 기록됩니다. 또한 C++ 객체로 XML 문서를 처음부터 새로 구성하여 디스크나 다른 출력 스트림에 기록할 수도 있습니다.

TinyXML은 쉽고 빠르게 배울 수 있도록 설계되었습니다. 헤더 2개와 cpp 파일 4개로 구성되어 있습니다. 이 파일들을 프로젝트에 추가하기만 하면 바로 사용할 수 있습니다. 시작하는 데 도움이 되는 예제 파일(xmltest.cpp)이 포함되어 있습니다.

TinyXML은 ZLib 라이선스로 배포되므로 오픈 소스 또는 상용 코드에서 사용할 수 있습니다. 라이선스의 자세한 내용은 모든 소스 파일의 상단에 있습니다.

TinyXML은 유연한 파서이면서도 진정으로 정확하고 규격에 맞는 XML 출력을 제공하려고 합니다. TinyXML은 C++ 규격을 합리적으로 준수하는 모든 시스템에서 컴파일되어야 합니다. 예외나 RTTI에 의존하지 않습니다. STL 지원 유무에 관계없이 컴파일할 수 있습니다. TinyXML은 UTF-8 인코딩과 처음 64k 문자 엔티티를 완전히 지원합니다.

지원하지 않는 기능

TinyXML은 DTD(Document Type Definitions)나 XSL(eXtensible Stylesheet Language)을 파싱하거나 사용하지 않습니다. 훨씬 더 완전한 기능을 갖춘 다른 파서들(www.sourceforge.org에서 XML을 검색해 보세요)이 있습니다. 하지만 그것들은 훨씬 더 크고, 프로젝트에 설정하는 데 시간이 더 오래 걸리며, 학습 곡선이 더 가파르고, 종종 더 제한적인 라이선스를 가지고 있습니다. 브라우저를 다루거나 더 완전한 XML 요구 사항이 있다면 TinyXML은 적합한 파서가 아닙니다.

다음 DTD 구문은 현재 TinyXML에서 파싱되지 않습니다:

@verbatim ]> @endverbatim

TinyXML이 이를 불법적으로 !ELEMENT 노드가 포함된 !DOCTYPE 노드로 보기 때문입니다. 이 문제는 향후 해결될 수 있습니다.

튜토리얼.

급한 분들을 위해 시작할 수 있는 튜토리얼이 있습니다. 시작하는 데 아주 좋은 방법이지만, 이 (아주 짧은) 매뉴얼을 완전히 읽어볼 가치가 있습니다.

  • @subpage tutorial0

코드 상태.

TinyXML은 성숙하고 테스트된 코드입니다. 매우 안정적입니다. 버그를 발견하면 sourceforge 웹 사이트(www.sourceforge.net/projects/tinyxml)에 버그 리포트를 제출해 주세요. 가능한 한 빨리 해결하겠습니다.

개선할 영역이 몇 가지 있습니다. TinyXML 작업에 관심이 있다면 sourceforge를 확인해 주세요.

관련 프로젝트

유용하게 사용할 수 있는 TinyXML 프로젝트들입니다! (설명은 각 프로젝트에서 제공했습니다.)

  • TinyXPath (http://tinyxpath.sourceforge.net). TinyXPath는 C++로 작성된 작은 규모의 XPath 구문 디코더입니다.
  • TinyXML++ (http://code.google.com/p/ticpp/). TinyXML++는 C++의 많은 장점을 사용하는 완전히 새로운 TinyXML 인터페이스입니다. 템플릿, 예외, 그리고 훨씬 더 나은 오류 처리를 제공합니다.

특징

STL 사용

TinyXML은 STL을 사용하거나 사용하지 않도록 컴파일할 수 있습니다. STL을 사용하는 경우 TinyXML은 std::string 클래스를 사용하며 std::istream, std::ostream, operator<<, operator>>를 완전히 지원합니다. 많은 API 메서드에는 'const char*' 및 'const std::string&' 형식이 모두 있습니다.

STL 지원이 컴파일에서 제외되면 STL 파일은 전혀 포함되지 않습니다. 모든 문자열 클래스는 TinyXML 자체에서 구현됩니다. API 메서드는 입력에 모두 'const char*' 형식을 사용합니다.

컴파일 타임 #define을 사용하세요:

root@kitploit:~
TIXML_USE_STL

이것으로 한 버전 또는 다른 버전을 컴파일할 수 있습니다. 이는 컴파일러로 전달하거나 "tinyxml.h"의 첫 줄로 설정할 수 있습니다.

참고: Linux에서 테스트 코드를 컴파일하는 경우 환경 변수 TINYXML_USE_STL=YES/NO를 설정하면 STL 컴파일이 제어됩니다. Windows 프로젝트 파일에는 STL 및 비 STL 대상이 제공됩니다. 프로젝트에서는 tinyxml.h의 첫 줄에 "#define TIXML_USE_STL" 줄을 추가하는 것이 아마 가장 쉬울 것입니다.

UTF-8

TinyXML은 UTF-8을 지원하므로 모든 언어의 XML 파일을 조작할 수 있습니다. TinyXML은 또한 "레거시 모드"(UTF-8 지원 이전에 사용되던 인코딩으로, "확장 ascii"라고 설명하는 것이 가장 적절할 것입니다)를 지원합니다.

일반적으로 TinyXML은 올바른 인코딩을 감지하여 사용하려고 시도합니다. 그러나 헤더 파일에서 TIXML_DEFAULT_ENCODING 값을 설정하면 TinyXML이 항상 하나의 인코딩을 사용하도록 강제할 수 있습니다.

TinyXML은 다음 중 하나가 발생할 때까지 레거시 모드를 가정합니다:

  1. 비표준이지만 일반적인 "UTF-8 선행 바이트"(0xef 0xbb 0xbf)가 파일 또는 데이터 스트림을 시작하면 TinyXML은 이를 UTF-8로 읽습니다.
  2. 선언 태그가 읽히고 encoding="UTF-8"이 있으면 TinyXML은 이를 UTF-8로 읽습니다.
  3. 선언 태그가 읽히고 인코딩이 지정되지 않으면 TinyXML은 이를 UTF-8로 읽습니다.
  4. 선언 태그가 읽히고 encoding="something else"가 있으면 TinyXML은 이를 레거시 모드로 읽습니다. 레거시 모드에서 TinyXML은 이전처럼 작동합니다. 이 모드가 정확히 무엇을 하는지는 명확하지 않지만, 이전 콘텐츠는 계속 작동해야 합니다.
  5. 위 기준 중 하나가 충족될 때까지 TinyXML은 레거시 모드로 실행됩니다.

인코딩이 잘못 설정되거나 감지되면 어떻게 될까요? TinyXML은 제대로 인코딩되지 않은 것으로 보이는 텍스트를 읽고 통과시키려고 시도합니다. 이상한 결과나 깨진 문자가 나타날 수 있습니다. TinyXML을 올바른 모드로 강제해야 할 수도 있습니다.

LoadFile( TIXML_ENCODING_LEGACY ) 또는 LoadFile( filename, TIXML_ENCODING_LEGACY )를 사용하여 TinyXML을 레거시 모드로 강제할 수 있습니다. TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY를 설정하면 항상 레거시 모드를 사용하도록 강제할 수 있습니다. 마찬가지로 동일한 방법으로 TIXML_ENCODING_UTF8로 강제할 수 있습니다.

영어 사용자의 경우, 영어 XML을 사용할 때 UTF-8은 low-ASCII와 동일합니다. UTF-8을 인지하거나 코드를 변경할 필요가 없습니다. UTF-8을 ASCII의 "상위 집합"으로 생각할 수 있습니다.

UTF-8은 더블 바이트 형식이 아닙니다. 그러나 Unicode의 표준 인코딩입니다! TinyXML은 현재 wchar, TCHAR 또는 Microsoft의 _UNICODE를 사용하거나 직접 지원하지 않습니다. "Unicode"라는 용어가 유니코드의 와이드 바이트 인코딩인 UTF-16을 잘못 지칭하는 경우가 흔합니다. 이것은 혼란의 원인입니다.

"고 ASCII" 언어(영어가 아닌 거의 모든 언어)의 경우, TinyXML은 XML이 UTF-8로 인코딩되어 있는 한 모든 언어를 동시에 처리할 수 있습니다. 이것은 약간 까다로울 수 있습니다. 오래된 프로그램과 운영 체제는 "기본" 또는 "기존" 코드 페이지를 사용하는 경향이 있습니다. 많은 앱(그리고 거의 모든 최신 앱)은 UTF-8을 출력할 수 있지만, 오래되었거나 고집스러운(또는 그냥 손상된) 앱은 여전히 기본 코드 페이지로 텍스트를 출력합니다.

예를 들어, 일본어 시스템은 전통적으로 SHIFT-JIS 인코딩을 사용합니다. SHIFT-JIS로 인코딩된 텍스트는 TinyXML이 읽을 수 없습니다. 좋은 텍스트 편집기는 SHIFT-JIS를 가져온 다음 UTF-8로 저장할 수 있습니다.

Skew.org 링크는 인코딩 문제를 잘 다루고 있습니다.

테스트 파일 "utf8test.xml"은 영어, 스페인어, 러시아어 및 중국어 간체가 포함된 XML입니다. (올바르게 번역되었기를 바랍니다.) "utf8test.gif" 파일은 IE에서 렌더링된 XML 파일의 화면 캡처입니다. 시스템에 올바른 글꼴(중국어 간체 또는 러시아어)이 없으면 올바르게 파싱할 수 있더라도 GIF 파일과 일치하는 출력을 볼 수 없습니다. 또한 (적어도 제 Windows 머신에서는) 콘솔 출력이 서양 코드 페이지에 있어서 Print() 또는 printf()가 파일을 올바르게 표시할 수 없습니다. 이것은 TinyXML의 버그가 아니라 단지 OS 문제입니다. TinyXML에 의해 데이터가 손실되거나 손상되지 않습니다. 콘솔이 UTF-8을 렌더링하지 않을 뿐입니다.

엔티티

TinyXML은 미리 정의된 "문자 엔티티", 즉 특수 문자를 인식합니다. 즉:

@verbatim & & < < > > " " ' ' @endverbatim

이것들은 XML 문서를 읽을 때 인식되어 해당 UTF-8 등가물로 변환됩니다. 예를 들어, XML이 다음과 같은 텍스트는

@verbatim Far & Away @endverbatim

TiXmlText 객체에서 쿼리하면 Value()가 "Far & Away"가 되며, XML 스트림/파일에 앰퍼샌드로 다시 기록됩니다. 이전 버전의 TinyXML은 문자 엔티티를 "보존"했지만, 최신 버전은 문자로 변환합니다.

또한 모든 문자는 유니코드 코드 포인트로 지정할 수 있습니다. 구문 " " 또는 " "은 둘 다 줄 바꿈 없는 공백 문자입니다.

출력

TinyXML은 각각 장점과 한계가 있는 여러 가지 방법으로 출력할 수 있습니다.
  • Print( FILE* ). 모든 C 파일과 stdout을 포함하는 std-C 스트림으로 출력합니다.

    • "예쁘게 출력"하지만 출력 옵션을 제어할 수는 없습니다.
    • 출력이 FILE 객체로 직접 스트리밍되므로 TinyXML 코드에 메모리 오버헤드가 없습니다.
    • Print() 및 SaveFile()에서 사용됩니다.
  • operator<<. C++ 스트림으로 출력합니다.

    • 표준 C++ iostream과 통합됩니다.
    • 줄 바꿈 없는 "네트워크 출력" 모드로 출력합니다. 네트워크 전송 및 C++ 객체 간 XML 이동에 좋지만, 사람이 읽기에는 어렵습니다.
  • TiXmlPrinter. std::string 또는 메모리 버퍼로 출력합니다.

    • API가 덜 간결합니다.
    • 향후 출력 옵션이 여기에 추가될 예정입니다.
    • 출력은 개선되고 확장됨에 따라 향후 버전에서 약간 변경될 수 있습니다.

스트림

TIXML_USE_STL이 켜져 있으면 TinyXML은 C++ 스트림(operator <<, >>)뿐만 아니라 C(FILE*) 스트림도 지원합니다. 알고 있어야 할 몇 가지 차이점이 있습니다.

C 스타일 출력: - FILE* 기반 - Print() 및 SaveFile() 메서드

root@kitploit:~
가능한 한 사람이 읽기 쉽도록 충분한 공백이 있는 형식화된 출력을 생성합니다. 매우 빠르고 잘못 구성된 XML 문서에 관대합니다. 예를 들어, 2개의 루트 요소와 2개의 선언을 포함하는 XML 문서도 여전히 출력됩니다.

C 스타일 입력: - FILE* 기반 - Parse() 및 LoadFile() 메서드

root@kitploit:~
빠르고 관대한 읽기입니다. C++ 스트림이 필요하지 않을 때마다 사용하세요.

C++ 스타일 출력: - std::ostream 기반 - operator<<

root@kitploit:~
가독성보다는 네트워크 전송을 위한 압축된 출력을 생성합니다. 시스템의 ostream 클래스 구현에 따라 다소 느릴 수 있습니다. (또는 아닐 수도 있습니다.) 잘못 구성된 XML에는 관대하지 않습니다. 문서에는 올바른 루트 요소가 하나 있어야 합니다. 추가 루트 수준 요소는 스트림으로 출력되지 않습니다.

C++ 스타일 입력: - std::istream 기반 - operator>>

root@kitploit:~
스트림에서 XML을 읽으므로 네트워크 전송에 유용합니다. 까다로운 부분은 스트림에 다른 데이터가 거의 확실히 있기 때문에 XML 문서가 완료된 시점을 아는 것입니다. TinyXML은 루트 요소를 읽은 후 XML 데이터가 완료된 것으로 간주합니다. 다시 말해, 루트 요소가 두 개 이상인 잘못 구성된 문서는 올바르게 읽히지 않습니다. 또한 operator>>는 STL 구현과 TinyXML의 한계 때문에 Parse보다 다소 느립니다.

공백

세상은 공백을 유지해야 하는지 압축해야 하는지에 대해 단순히 의견이 일치하지 않습니다. 예를 들어, '_'가 공백이라고 가정하고 "Hello____world"를 보십시오. HTML 및 적어도 일부 XML 파서는 이를 "Hello_world"로 해석합니다. 그들은 공백을 압축합니다. 일부 XML 파서는 그렇지 않으며 "Hello____world"로 남겨 둡니다. (_가 공백이라고 계속 가정하는 것을 기억하세요.) 다른 사람들은 __Hello___world__가 Hello___world가 되어야 한다고 제안합니다.

이것은 제가 만족할 만큼 해결되지 않은 문제입니다. TinyXML은 처음 2가지 접근 방식을 지원합니다. 원하는 동작을 설정하려면 TiXmlBase::SetCondenseWhiteSpace( bool )를 호출하세요. 기본값은 공백을 압축하는 것입니다.

기본값을 변경하는 경우 XML 데이터를 파싱하는 호출을 하기 전에 TiXmlBase::SetCondenseWhiteSpace( bool )를 호출해야 하며, 설정한 후에는 변경하지 않는 것이 좋습니다.

핸들

XML 문서를 강력한 방식으로 탐색할 때 메서드 호출에서 null 반환을 확인하는 것이 중요합니다. 오류에 안전한 구현은 다음과 같은 많은 코드를 생성할 수 있습니다:

@verbatim TiXmlElement* root = document.FirstChildElement( "Document" ); if ( root ) { TiXmlElement* element = root->FirstChildElement( "Element" ); if ( element ) { TiXmlElement* child = element->FirstChildElement( "Child" ); if ( child ) { TiXmlElement* child2 = child->NextSiblingElement( "Child" ); if ( child2 ) { // Finally do something useful. @endverbatim

이를 정리하기 위해 핸들이 도입되었습니다. TiXmlHandle 클래스를 사용하면 이전 코드는 다음과 같이 축소됩니다:

@verbatim TiXmlHandle docHandle( &document ); TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); if ( child2 ) { // do something useful @endverbatim

훨씬 다루기 쉽습니다. 자세한 내용은 TiXmlHandle을 참조하십시오.

행과 열 추적

노드와 속성을 소스 파일의 원래 위치로 추적할 수 있는 것은 일부 애플리케이션에 매우 중요할 수 있습니다. 또한 파싱 오류가 원본 소스에서 어디에서 발생했는지 아는 것은 많은 시간을 절약할 수 있습니다.

TinyXML은 텍스트 파일에 있는 모든 노드와 속성의 행과 열 원점을 추적할 수 있습니다. TiXmlBase::Row() 및 TiXmlBase::Column() 메서드는 소스 텍스트에서 노드의 원점을 반환합니다. 올바른 탭은 TiXmlDocument::SetTabSize()에서 구성할 수 있습니다.

사용 및 설치

xmltest를 컴파일하고 실행하려면:

Linux Makefile과 Windows Visual C++ .dsw 파일이 제공됩니다. 간단히 컴파일하고 실행하세요. demotest.xml 파일을 디스크에 쓰고 화면에 출력을 생성합니다. 또한 다양한 기술을 사용하여 찾은 노드 수를 출력하여 DOM을 탐색하는 것을 테스트합니다.

Linux makefile은 매우 일반적이며 많은 시스템에서 실행됩니다. 현재 mingw와 MacOSX에서 테스트되었습니다. 'make depend'를 실행할 필요는 없습니다. 의존성은 하드 코딩되어 있습니다.

VC6용 Windows 프로젝트 파일

  • tinyxml: tinyxml 라이브러리, 비 STL
  • tinyxmlSTL: tinyxml 라이브러리, STL
  • tinyXmlTest: 테스트 앱, 비 STL
  • tinyXmlTestSTL: 테스트 앱, STL

Makefile

makefile 상단에서 다음을 설정할 수 있습니다:

PROFILE, DEBUG, TINYXML_USE_STL. 자세한 내용은(있으면) makefile에 있습니다.

tinyxml 디렉터리에서 "make clean"을 입력한 다음 "make"를 입력하세요. 'xmltest' 실행 파일이 생성됩니다.

애플리케이션에서 사용하려면:

tinyxml.cpp, tinyxml.h, tinyxmlerror.cpp, tinyxmlparser.cpp, tinystr.cpp 및 tinystr.h를 프로젝트나 메이크 파일에 추가하세요. 그게 전부입니다! 합리적으로 규격을 준수하는 C++ 시스템에서 컴파일되어야 합니다. TinyXML을 위해 예외나 RTTI를 활성화할 필요는 없습니다.

TinyXML 작동 방식.

예제가 아마 가장 좋은 방법일 것입니다. 다음을 보십시오: @verbatim <?xml version="1.0" standalone=no> Go to the Toy store! Do bills @endverbatim

그다지 많은 할 일 목록은 아니지만, 작동은 합니다. 이 파일("demo.xml")을 읽으려면 문서를 만들고 파싱하면 됩니다: @verbatim TiXmlDocument doc( "demo.xml" ); doc.LoadFile(); @endverbatim

그러면 바로 사용할 수 있습니다. 이제 몇 가지 줄과 그것들이 DOM과 어떻게 관련되는지 살펴보겠습니다.

@verbatim

@endverbatim 첫 번째 줄은 선언이며 TiXmlDeclaration 클래스로 변환됩니다. 문서 노드의 첫 번째 자식이 됩니다. 이것은 TinyXML이 파싱하는 유일한 지시문/특수 태그입니다. 일반적으로 지시문 태그는 TiXmlUnknown에 저장되므로 디스크에 다시 저장할 때 명령이 손실되지 않습니다. @verbatim @endverbatim 주석입니다. TiXmlComment 객체가 됩니다. @verbatim @endverbatim "ToDo" 태그는 TiXmlElement 객체를 정의합니다. 이 객체에는 속성이 없지만 2개의 다른 요소를 포함합니다. @verbatim @endverbatim "ToDo" 요소의 자식인 또 다른 TiXmlElement를 생성합니다. 이 요소에는 "priority"라는 이름과 "1"이라는 값을 가진 속성이 1개 있습니다. @verbatim Go to the @endverbatim TiXmlText입니다. 이것은 리프 노드이며 다른 노드를 포함할 수 없습니다. "Item" TiXmlElement의 자식입니다. @verbatim @endverbatim 또 다른 TiXmlElement로, 이번에는 "Item" 요소의 자식입니다. 등등. 전체 객체 트리를 살펴보면 다음과 같이 끝납니다: @verbatim TiXmlDocument "demo.xml" TiXmlDeclaration "version='1.0'" "standalone=no" TiXmlComment " Our to do list data" TiXmlElement "ToDo" TiXmlElement "Item" Attribtutes: priority = 1 TiXmlText "Go to the " TiXmlElement "bold" TiXmlText "Toy store!" TiXmlElement "Item" Attributes: priority=2 TiXmlText "Do bills" @endverbatim

문서

문서는 'dox' 구성 파일을 사용하여 Doxygen으로 빌드됩니다.

라이선스

TinyXML은 zlib 라이선스로 배포됩니다: 이 소프트웨어는 명시적이거나 묵시적인 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 저자는 이 소프트웨어 사용으로 인해 발생하는 손해에 대해 책임을 지지 않습니다. 누구에게나 상용 애플리케이션을 포함한 어떤 목적으로든 이 소프트웨어를 사용하고, 수정하고, 자유롭게 재배포할 수 있는 권한이 부여되며, 다음 제한 사항을 따릅니다: 1. 이 소프트웨어의 출처를 허위로 표시해서는 안 됩니다. 원래 소프트웨어를 직접 작성했다고 주장해서는 안 됩니다. 이 소프트웨어를 제품에서 사용하는 경우 제품 문서에서의 acknowledgment는 감사하지만 필수는 아닙니다. 2. 수정된 소스 버전은 수정된 것으로 명확히 표시되어야 하며, 원본 소프트웨어로 허위 표시되어서는 안 됩니다. 3. 이 고지는 어떤 소스 배포판에서도 제거되거나 변경되어서는 안 됩니다.

참고 자료

W3C(World Wide Web Consortium)는 XML의 권위 있는 표준 기구이며, 그 웹 페이지에는 방대한 양의 정보가 포함되어 있습니다. 권위 있는 사양: http://www.w3.org/TR/2004/REC-xml-20040204/ 또한 Robert Eckstein이 저술하고 OReilly가 출판한 "XML Pocket Reference"를 추천합니다... 이 모든 것을 시작하게 한 책입니다.

기여자, 연락처 및 간략한 역사

제안, 버그, 아이디어 및 격려를 보내주신 모든 분께 크게 감사드립니다. 모든 것이 도움이 되며 이 프로젝트를 재미있게 만듭니다. 페이지를 활기차게 유지해 주는 웹 페이지 기여자들에게 특별히 감사드립니다. 너무 많은 사람들이 버그와 아이디어를 보내주어서 여기에 나열하는 대신 "changes.txt" 파일에서 공로를 인정하려고 합니다. TinyXML은 원래 Lee Thomason이 작성했습니다. (문서에 여전히 "I"가 자주 나타납니다.) Lee는 Yves Berquin, Andrew Ellerton 및 tinyXml 커뮤니티의 도움을 받아 변경 사항을 검토하고 새 버전을 릴리스합니다. 귀하의 제안을 감사히 여기며 TinyXML을 사용하신다면 저희가 알게 되기를 바랍니다. 즐겁게 사용하시고 유용하게 쓰이기를 바랍니다. 질문, 의견, 버그를 게시하거나 다음으로 문의해 주세요: www.sourceforge.net/projects/tinyxml Lee Thomason, Yves Berquin, Andrew Ellerton */
도구 다운로드