本文整理汇总了C++中XMLNode::SetAttrMap方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLNode::SetAttrMap方法的具体用法?C++ XMLNode::SetAttrMap怎么用?C++ XMLNode::SetAttrMap使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLNode
的用法示例。
在下文中一共展示了XMLNode::SetAttrMap方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _Parse
XMLNode* XMLParser::_Parse(wchar_t* buf)
{
std::wstring token;
eCurState state = NONE;
attrMap attributeMap;
std::wstring attrKey;
XMLNode* curNode = new XMLNode;
while( _mParsingIndex < _mBufSize )
{
switch( buf[_mParsingIndex] )
{
case L'<':
if( state == ELEMENT ) // After element, It could be either closing node or new child node
{
if( _IsTokenTab(token) ) // At first, delete the all gap (similar to trim function)
{
token.clear();
}
if( buf[_mParsingIndex+1] == L'/' ) // In case of closing the node
{
curNode->SetElement( token );
token.clear();
state = CLOSING_NODE;
++_mParsingIndex;
}
else // In case of new child node
{
curNode->AddChild( _Parse(buf) );
}
}
else // In case of new node
{
++_mParsingIndex;
if( buf[_mParsingIndex] == L'?' || buf[_mParsingIndex] == L'!') // if new node is about xml information
{
_GetTokenWith(buf, L'>');
}
else // Read the new node's name
{
token += buf[_mParsingIndex];
state = OPENING_NODE;
}
}
break;
case L'>':
switch( state )
{
case ATTR_VALUE: // In case that new node's attr setting is all set
curNode->SetAttrMap(attributeMap);
attributeMap.clear();
state = ELEMENT;
break;
case CLOSING_NODE: // In case that making node is all set
if( curNode->GetName().compare(token) != 0 )
{
delete curNode;
wprintf(L"XML ERROR ( closing element's name isn't correct [%s] ) - line %d", curNode->GetName().c_str(), _mLine );
return nullptr;
}
return curNode;
case OPENING_NODE: // In case that new node's name setting is all set
curNode->SetName( token );
token.clear();
state = ELEMENT;
break;
default:
std::wcerr<<L"SWITCH_DEFAULT : "<<__FILE__<<L" "<<__LINE__<<std::endl;
return nullptr;
}
break;
case L' ':
switch( state )
{
case OPENING_NODE: // After setting the name of new node
curNode->SetName( token );
token.clear();
state = ATTR_VALUE;
break;
case ELEMENT : // if ' ' is used for element, then just use that
token += L' ';
break;
//.........这里部分代码省略.........