오늘 작업하면서 몇 가지 잊지 말아야 하겠다는 팁 몇 가지를 적어봅니다.

프로젝트에 정적 라이브러리 파일을 추가하여 빌드하다 보면,

1>msvcprtd.lib(MSVCP80D.dll) : error LNK2005 XXX가 이미 정의되어있습니다.

위와 같은 에러가 발생하곤 한다. 이럴 때, 추가한 정적 라이브러리의 [ 런타임 라이브러리 ] 속성이 MD / MT인지 살펴보자. 현재 프로젝트와 [ 런타임 라이브러리 ] 속성이 다르면, 위와 같은 충돌이 일어난다.

TinyXML 파싱해서 값 읽기

재귀 함수를 이용해서 순차적으로 값을 읽어내려가는 방법.
void recur(TiXmlNode *pNode)
{
        if(pNode)
        {
                switch(pNode->Type())
                {
                case TiXmlNode::DECLARATION:
                        cout << "Declaration\n";
                        break;

                case TiXmlNode::ELEMENT:
                        {
                                cout << "[" <<pNode>ToElement()->Value() << "]\n";
                                TiXmlAttribute *pAttr = pNode->ToElement()->FirstAttribute();
                                while(pAttr)
                                {
                                        cout <<pAttr>Value() << "\n";
                                        pAttr = pAttr->Next();
                                }
                        }
                        break;

                case TiXmlNode::TEXT:
                        cout <<pNode>ToText()->Value() << "\n";
                        break;
                }

                for(TiXmlNode *pNext = pNode->FirstChild(); pNext; pNext = pNext->NextSibling()) recur(pNext);
        }
}

void main()
{
        TiXmlDocument xmlDoc;
        xmlDoc.LoadFile("d:\\test.xml");

        TiXmlNode *pNode = &xmlDoc;
        tt(pNode);
}

직접 특정 노드에 접근하여, 값을 읽는 방법.
void ParseXML( void )
{
        TiXmlDocument* pXMLDoc = new TiXmlDocument();
        if( pXMLDoc->LoadFile( "Test.xml" ) == false )
                return;

        TiXmlElement* pRootNode = pXMLDoc->RootElement();
        TiXmlElement* pNodeElem = pRootNode->FirstChildElement("NodeName");

        int nTemp = 0;
        std::string strTemp = "";
        while( pNodeElem )
        {
                pNodeElem->QueryIntAttribute("AttributeInt", &nTemp);
                strTemp = pNodeElem->Attribute("AttributeStr");

                pNodeElem = pNodeElem->NextSiblingElement("NodeName");
        }

        SDEL( pXMLDoc );
}

+ Recent posts