void CLanguages::LoadStringTable() { //parse language xml and load strings to table //clear old table m_LanguageStringTable.clear(); m_ObjectStringTable.clear(); stringc file = m_Language->value + stringc("_strings.xml"); IXMLReader* xml = m_FS->createXMLReader(file); if (xml) { //get language name and value from file while(xml->read()) { switch(xml->getNodeType()) { case io::EXN_ELEMENT: { if (stringw("string").equals_ignore_case(xml->getNodeName())) { TLanguageString lang; lang.id = xml->getAttributeValueAsInt(L"id"); lang.value = xml->getAttributeValue(L"value"); m_LanguageStringTable.push_back(lang); } } } } xml->drop(); // don't forget to delete the xml reader } file = m_Language->value + stringc("_go_strings.xml"); xml = m_FS->createXMLReader(file); if (xml) { //get language name and value from file while(xml->read()) { switch(xml->getNodeType()) { case io::EXN_ELEMENT: { if (stringw("string").equals_ignore_case(xml->getNodeName())) { TLanguageString lang; lang.id = xml->getAttributeValueAsInt(L"id"); lang.value = xml->getAttributeValue(L"value"); m_ObjectStringTable.push_back(lang); } } } } xml->drop(); // don't forget to delete the xml reader } }
/** * \brief Init loads list of available languages and sets default language from preferences. * \author Petar Bajic * \date January, 21 2012. */ bool CLanguages::Init() { u32 index = 0; IFileList* fileList = m_FS->createFileList(); u32 count = fileList->getFileCount(); for (u32 i=0; i<count; i++) { stringc file = fileList->getFileName(i); IXMLReader* xml = m_FS->createXMLReader(file); if (xml) { //get language name and value from file while(xml->read()) { switch(xml->getNodeType()) { case io::EXN_ELEMENT: { if (stringw("Language").equals_ignore_case(xml->getNodeName())) { TLanguage* lang = new TLanguage(); lang->name = xml->getAttributeValue(L"name"); lang->value = xml->getAttributeValue(L"value"); lang->index = index; m_ListOfAvailableLanguages.push_back(lang); index++; } } } } xml->drop(); // don't forget to delete the xml reader } } return true; }
void IXMLWriterTest::writeElement() { IWriteFile* fWrite = IFileSystem::createWriteFile( "assets/io/fileXMLEmpty.xml"); IXMLWriter* fxml = IFileSystem::createXMLWriter(fWrite); if (fWrite) fWrite->drop(); fxml->writeElement("fff", true, "attr1", "attrValue1"); if (fxml) fxml->drop(); IReadFile* fRead = IFileSystem::createReadFile( "assets/io/fileXMLEmpty.xml"); IXMLReader* fxmlR = IFileSystem::createXMLReader(fRead); fxmlR->read(); if (fxmlR->getNodeType() != EXNT_ELEMENT) mes.append( "\n writeElement: incorrectly indicates the type of node"); if (fxmlR->getAttributeCount() != 1) mes.append( "\n writeElement: correctly returns the number of attributes"); core::stringc strA = core::stringc("attr1"); if (!strA.equalsn(fxmlR->getAttributeName(0), 4)) mes.append( "\n writeElement: correctly returns the name of attributes"); core::stringc strV = core::stringc("attrValue1"); if (!strV.equalsn(fxmlR->getAttributeValue(0), 10)) mes.append( "\n writeElement: correctly returns the value of attributes"); if (fxmlR) fxmlR->drop(); if (fRead) fRead->drop(); //TODO should not create an element with no name IWriteFile* fWrite1 = IFileSystem::createWriteFile( "assets/io/fileXMLEmpty.xml"); IXMLWriter* fxml1 = IFileSystem::createXMLWriter(fWrite1); if (fWrite1) fWrite1->drop(); fxml1->writeElement("", true); if (fxml1) fxml1->drop(); IReadFile* fRead1 = IFileSystem::createReadFile( "assets/io/fileXMLEmpty.xml"); IXMLReader* fxmlR1 = IFileSystem::createXMLReader(fRead1); fxmlR1->read(); core::stringc strN = core::stringc(""); if (strN.equalsn(fxmlR1->getNodeName(), 1)) mes.append("\n writeElement: node name can not be empty"); if (fxmlR1->getAttributeCount() != 0) mes.append("\n writeElement: sees non-existent attributes"); if (fxmlR1) fxmlR1->drop(); if (fRead1) fRead1->drop(); core::array<core::stringc> atr; atr.insert(core::stringc("atr1")); atr.insert(core::stringc("atr2")); atr.insert(core::stringc("7")); atr.insert(core::stringc(0)); atr.insert(core::stringc("art5")); atr.insert(core::stringc("</>")); atr.insert(core::stringc("art7")); core::array<core::stringc> atrValue; atrValue.insert(core::stringc("atrValue1")); atrValue.insert(core::stringc("atrValue2")); atrValue.insert(core::stringc("atrValue3")); atrValue.insert(core::stringc("atrValue4")); atrValue.insert(core::stringc("atrValue5")); atrValue.insert(core::stringc("6")); atrValue.insert(core::stringc("")); IWriteFile* fWrite3 = IFileSystem::createWriteFile( "assets/io/fileXMLEmpty.xml"); IXMLWriter* fxml3 = IFileSystem::createXMLWriter(fWrite3); if (fWrite3) fWrite3->drop(); fxml3->writeElement("fff", true, atr, atrValue); if (fxml3) fxml3->drop(); IReadFile* fRead3 = IFileSystem::createReadFile( "assets/io/fileXMLEmpty.xml"); IXMLReader* fxmlR3 = IFileSystem::createXMLReader(fRead3); fxmlR3->read(); if (fxmlR3->getAttributeCount() != 7) mes.append( "\n writeElement: correctly returns the number of attributes"); //TODO attribute name can not be a 0 if (fxmlR3->getAttributeName(3) == 0) mes.append( "\n writeElement: attribute name can not be a 0"); //TODO attribute value can not be empty core::stringc strAV = core::stringc(""); if (strAV.equalsn(fxmlR3->getAttributeValue(6), 1)) mes.append( "\n writeElement: attribute value can not be empty"); if (fxmlR3) { fxmlR3->drop(); } }