tinyxml linux 와 윈도 우즈 에서 의 컴 파일 및 사용 상세 설명

10225 단어 tinyxml
1. 요약 1. XML 은 모두 EXtensible Markup Language 라 고 하 며 확장 가능 한 태그 언어 로 번역 되 었 습 니 다. XML 파일 은 보통 텍스트 파일 입 니 다. 인 코딩 2. TinyXML 은 XML 을 처리 하 는 제3자 라 이브 러 리 입 니 다. 2. 설명 1. 본 블 로 그 는 tinyxml 를 다운로드 합 니 다.2_6_2 버 전, tinyxml2_6_2 다운로드 주소:http://download.csdn.net/download/yzf279533105/9924003
2. 블 로그 내용 및 모든 코드 는 이 버 전에 서 컴 파일, 실행, 테스트 통과, 예제 코드 다운로드 주소 입 니 다.
 
        windows 다음 예제 코드:http://download.csdn.net/download/yzf279533105/9942336
        Linux 다음 예제 코드: (소개 문서 가 있 습 니 다. 문서 절차 에 따라 조작 하 십시오. 성공 적 으로 실 행 될 수 있 도록 하 십시오)
            정적 라 이브 러 리 의 예제 코드 사용 하기:http://download.csdn.net/download/yzf279533105/9942600
            동적 라 이브 러 리 의 예제 코드 사용 하기:http://download.csdn.net/download/yzf279533105/9942605
3. Windows 에서 의 컴 파일    1. 위 주소 에서 tinyxml 다운로드 받 기2_6_2. zip 파일, 압축 풀기 tinyxml2_6_2 폴 더    2. 디 렉 터 리 에 입장 tinyxml2_6_2 / tinyxml, 소스 코드 총 2 개의 헤더 파일, 4 개의 소스 파일 을 볼 수 있 습 니 다. 각각 tinyxml. h, tinystr. h, tinyxml. cpp, tinystr. cpp, tinyxmlerror. cpp, tinyxmlparse. cpp 입 니 다.    3. tinyxml 라 이브 러 리 가 작 기 때문에 정적 라 이브 러 리 나 동적 라 이브 러 리 로 컴 파일 할 필요 가 없습니다. 위 에 열거 한 6 개의 파일 을 예제 프로젝트 디 렉 터 리 에 복사 하면 바로 사용 할 수 있 습 니 다.
4. Windows 에서 의 사용
 
 
    1. HellowWorld 와 같은 빈 win 32 콘 솔 프로젝트 를 만 들 면 됩 니 다. 이 프로젝트 는 tinyxmlExample 이 라 고 명명 되 었 습 니 다.    2. 이 예제 프로젝트 루트 디 렉 터 리 에 tinyxml 폴 더 를 추가 하고 위 에 열거 한 6 개의 tinyxml 파일 을 이 디 렉 터 리 에 복사 하여 속성 페이지 설정 속성 - > C / C + + - > 일반 - > 추가 포함 디 렉 터 리 에 이 프로젝트 의 헤더 파일 디 렉 터 리 를 설정 합 니 다. 즉, ".. /" 는 루트 디 렉 터 리 가 추가 되 었 음 을 표시 합 니 다.    3. 프로젝트 에 원본 파일 을 추가 하고 tinyxml 전 체 를 포함 시 키 면 모든 코드 가 포 함 됩 니 다.
    4. 원본 파일 main. cpp 를 추가 합 니 다. 코드 는 다음 과 같 습 니 다.
#include 
#include "tinyxml/tinyxml.h"
using namespace std;

int main()
{
	//    xml    
	string filename = "example.xml";

	////////////////////////////////////////////////////	    xml  	////////////////////////////////////////////////
	//     TiXmlDocument   
	TiXmlDocument* pWriteDoc = new TiXmlDocument();

	// xml   (    :  ,    ,      )
	TiXmlDeclaration* pDeclare = new TiXmlDeclaration("1.0", "UTF-8", "yes");  
	pWriteDoc->LinkEndChild(pDeclare);			//      

	//    
	TiXmlElement* pRootElement = new TiXmlElement("telephonebook");
	pWriteDoc->LinkEndChild(pRootElement);		//          

	//     
	TiXmlElement* pPersonElement = new TiXmlElement("person");	//     
	pRootElement->LinkEndChild(pPersonElement);	//        

	//     
	TiXmlElement* pNameElement = new TiXmlElement("name");
	//   
	TiXmlText* nameContent = new TiXmlText("xiaoming");		//      
	pNameElement->LinkEndChild(nameContent);	//          
	pPersonElement->LinkEndChild(pNameElement);	//              

	//     
	TiXmlElement* pAddrElement = new TiXmlElement("addr");	//      
	//     
	pAddrElement->SetAttribute("addr1","hubei");
	pAddrElement->SetAttribute("addr2","wuhan");
	pPersonElement->LinkEndChild(pAddrElement);	//              

	//     
	TiXmlElement* pEmailElement = new TiXmlElement("email");//      
	//   
	TiXmlText* emailContent = new TiXmlText("[email protected]");  
	pEmailElement->LinkEndChild(emailContent);	//          
	pPersonElement->LinkEndChild(pEmailElement);//              

	///////////////////////////////////////////////////		     	////////////////////////////////////////////////
	pWriteDoc->SaveFile(filename.c_str());
	printf( "new xml success, file's name is %s

", filename.c_str()); //////////////////////////////////////////////////// //////////////////////////////////////////////// // TiXmlDocument TiXmlDocument* pReadDocument = new TiXmlDocument(); // if (!pReadDocument->LoadFile(filename.c_str())) { printf( "Could not load example xml file %s. Error='%s'
", filename.c_str(),pReadDocument->ErrorDesc() ); return 0; } printf("read xml file success, file' name is %s

",filename.c_str()); // ( ) TiXmlDeclaration* pDeclar = pReadDocument->FirstChild()->ToDeclaration(); if (pDeclar != NULL) { printf("read declare, version is %s , encoding is %s
",pDeclar->Version(), pDeclar->Encoding()); } // pRootElement = pReadDocument->RootElement(); //////////////////////////////////////////////////// , //////////////////////////////////////////// printf("begin read all xml element

"); // person // FirstChildElement() : // NextSiblingElement : int i = 0; for (TiXmlElement* pItem = pRootElement->FirstChildElement("person"); pItem; pItem = pItem->NextSiblingElement("person")) { printf("read the %d person
",++i); // TiXmlElement* pName = pItem->FirstChildElement("name"); if (pName != NULL) { printf("the %d person's name = %s
", i, pName->GetText()); } // TiXmlElement* pAddr = pItem->FirstChildElement("addr"); if (pAddr != NULL) { // TiXmlAttribute* pAddr1 = pAddr->FirstAttribute(); if (pAddr1 != NULL) { printf("the %d person's addr1 = %s
", i, pAddr1->Value()); // TiXmlAttribute* pAddr2 = pAddr1->Next(); if (pAddr2 != NULL) { printf("the %d person's addr2 = %s
", i, pAddr2->Value()); } } } printf("

"); } //////////////////////////////////////////////////// , //////////////////////////////////////////// TiXmlElement* pPerson = pRootElement->FirstChildElement("person"); if (pPerson != NULL) { // "email" , TiXmlElement* pEmail = pPerson->FirstChildElement("email"); if (pEmail != NULL) { pPerson->RemoveChild(pEmail); } // "addr" TiXmlElement* pAddr = pPerson->FirstChildElement("addr"); if (pAddr != NULL) { pAddr->SetAttribute("addr2", "huanggang"); // // //pAddr->RemoveAttribute("addr1"); } } ////////////////////////////////////////////////////// //////////////////////////////////////////////// // , :person TiXmlElement* pNewElement = new TiXmlElement("person"); // TiXmlElement* pNameElementAdd = new TiXmlElement("name"); // :name TiXmlText* pNameText = new TiXmlText("zhangsan"); pNameElementAdd->LinkEndChild(pNameText); // TiXmlElement* pAddrElementAdd = new TiXmlElement("addr"); // :addr pAddrElementAdd->SetAttribute("addr1","guangdong"); pAddrElementAdd->SetAttribute("addr2","shenzhen"); // TiXmlElement* pEmailElementAdd = new TiXmlElement("email"); // :email TiXmlText* pEmailText = new TiXmlText("[email protected]"); pEmailElementAdd->LinkEndChild(pEmailText); // // pNewElement->LinkEndChild(pNameElementAdd); pNewElement->LinkEndChild(pAddrElementAdd); pNewElement->LinkEndChild(pEmailElementAdd); // pRootElement->LinkEndChild(pNewElement); printf("add new element success
"); /////////////////////////////////////////////////// //////////////////////////////////////////////// if (pReadDocument->SaveFile(filename.c_str())) { printf("save file success
"); } getchar(); return 0; }

5. Linux 의 컴 파일
    1. 위의 주소 에서 tinyxml 다운로드 받 기2_6_2. zip 파일, 압축 해제 명령 실행 unzip tinyxml2_6_2. zip 폴 더 tinyxml 가 져 오기
 
    2. 정적 라 이브 러 리 로 컴 파일
        2.1 디 렉 터 리 tinyxml 에 들 어가 vim 명령 으로 Makefile 파일 열기
        2.2 그 중 한 줄 을 OUTPUT: = xmltest 를 OUTPUT: = libtinyxml. a 로 변경 합 니 다. 컴 파일 된 정적 라 이브 러 리 파일 이름 을 libtinyxml. a 로 표시 합 니 다.
        2. 3 그 중의 한 줄 을 SRCS: = tinyxml. cpp tinyxml - parser. cpp xmltest. cpp tinyxmlerror. cpp tinystr. cpp 의 xmltest. cpp 를 삭제 합 니 다. 이 테스트 파일 을 컴 파일 할 필요 가 없 기 때 문 입 니 다.
        2.4 그 중의 한 줄 을 ${LD} - o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA LIBS} 변경 ${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA LIBS} 은 정적 라 이브 러 리 로 연결 되 어 있 음 을 표시 합 니 다.
        2.5 그 중의 한 줄 을 xmltest. o: tinyxml. h tinystr. h 를 삭제 합 니 다. 테스트 파일 을 컴 파일 할 필요 가 없 기 때 문 입 니 다.
        2.6 Makefile 파일 저장
        2.7 이전 디 렉 터 리 인 디 렉 터 리 tinyxml 에서 make 명령 을 실행 하면 이 디 렉 터 리 에서 컴 파일 된 정적 라 이브 러 리 파일 libtinyxml. a 를 얻 을 수 있 습 니 다.
    3. 동적 라 이브 러 리 로 컴 파일
        3.1 디 렉 터 리 tinyxml 에 들 어가 vim 명령 으로 Makefile 파일 열기
        3.2 그 중의 한 줄 에 있다. DEBUG_CFLAGS     := -Wall - WNo - format - g - DDebug - fpIC 의 끝 에 - fpIC 를 추가 하여 위치 와 무관 한 코드 를 컴 파일 하 는 것 을 표시 합 니 다. PIC 의 뜻 은 Position Independent Code 입 니 다.
        3.3 그 중의 한 줄 RELEASE_CFLAGS   := -Wall - wnnown - pragmas - wno - format - O3 의 끝 에 - fpIC 를 추가 한 이 유 는 같 습 니 다.
        3.4 OUTPUT: = xmltest 를 OUTPUT: = libtinyxml. so 로 변경 합 니 다. 컴 파일 된 동적 라 이브 러 리 파일 이름 을 libtinyxml. so 로 표시 합 니 다.
        3.5 그 중의 한 줄 을 SRCS: = tinyxml. cpp tinyxml - parser. cpp xmltest. cpp tinyxmlerror. cpp tinystr. cpp 의 xmltest. cpp 를 삭제 합 니 다. 이 테스트 파일 을 컴 파일 할 필요 가 없 기 때 문 입 니 다.
        3.6 그 중의 한 줄 을 ${LD} - o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA LIBS} 변경 ${LD} - shared - o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA LIBS} 은 동적 라 이브 러 리 로 연 결 된 것 을 표시 합 니 다.
        3.7 그 중의 한 줄 을 xmltest. o: tinyxml. h tinystr. h 를 삭제 합 니 다. 테스트 파일 을 컴 파일 할 필요 가 없 기 때 문 입 니 다.
        3.8 Makefile 파일 저장
        3.9 이전 디 렉 터 리 인 디 렉 터 리 tinyxml 에서 make 명령 을 실행 하면 이 디 렉 터 리 에서 컴 파일 된 동적 라 이브 러 리 파일 libtinyxml. so 를 얻 을 수 있 습 니 다.
6. Linux 에서 의 사용
    1.   코드 는 4 단계 windows 의 코드 와 완전히 같 습 니 다. Makefile 을 작성 해 야 합 니 다. 예제 코드 에 있 습 니 다.
    2.   링크 ux 다음 예제 코드 다운로드 주소: (소개 문서 가 있 습 니 다. 문서 절차 에 따라 조작 하여 성공 적 으로 실행 할 수 있 도록 하 십시오)
        정적 라 이브 러 리 의 예제 코드 사용 하기:http://download.csdn.net/download/yzf279533105/9942600
        동적 라 이브 러 리 의 예제 코드 사용 하기:http://download.csdn.net/download/yzf279533105/9942605

좋은 웹페이지 즐겨찾기