오늘 작업하면서 몇 가지 잊지 말아야 하겠다는 팁 몇 가지를 적어봅니다.
프로젝트에 정적 라이브러리 파일을 추가하여 빌드하다 보면,
위와 같은 에러가 발생하곤 한다. 이럴 때, 추가한 정적 라이브러리의 [ 런타임 라이브러리 ] 속성이 MD / MT인지 살펴보자. 현재 프로젝트와 [ 런타임 라이브러리 ] 속성이 다르면, 위와 같은 충돌이 일어난다.
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);
}
{
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 );
}
{
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 );
}