1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| string CharacterConfig::getCharacter(int id)
{
string return_account;
bool found = false;
if (not id < 1 or not id > 8)
{
for( XMLSize_t i = 0; i < children->getLength(); ++i ) // Boucle sur chaque account
{
DOMNode* currentNode = children->item(i); // récupére l'account de la liste
DOMElement* currentElement = dynamic_cast< DOMElement* >( currentNode );
if ( currentElement != NULL)
{
int server_id = XMLString::parseInt(currentElement->getAttribute(_idAttribute)); // récupére l'id de l'account
if (server_id == id)
{
if( XMLString::equals(currentNode->getNodeName(), _accountTag)) // Vérifie quand meme si j'ai bien un element account
{
DOMNodeList* accountNode = currentNode->getChildNodes(); // récupére ce qu'il y a dans account
for( XMLSize_t i2 = 0; i2 < accountNode->getLength(); ++i2 ) // boucle sur chaque element de l'account
{
DOMNode* currentAccountNode = accountNode->item(i2);
if(XMLString::equals(currentAccountNode->getNodeName(), _characterNameTag)) // on vérifie que l'on a bien notre element character
{
DOMNode* characterNode = currentAccountNode->getFirstChild(); // récupére le premier (le seul) element
DOMText* characterText = dynamic_cast< DOMText* > ( characterNode );
if (characterText != NULL)
{
string result = XMLString::transcode(characterText->getWholeText());
size_t find = result.find("\n");
if ( find != string::npos )
result.erase(find);
if(!result.empty())
{
found = true;
return_account = result;
}
else
{
found = false;
return_account = "NONE";
}
break;
}
else
{
break;
}
}
else
{
if(not found)
return_account = "NONE";
}
}
}
}
else
{
if(not found)
return_account = "NONE";
}
}
}
}
return return_account;
} |
Partager