void parseXmlData(TiXmlNode* pNode,IXmlParser* pObject) { if (pNode == NULL) return; TiXmlNode* pChild = pNode->FirstChild(); if (pChild == NULL) return; int iType = pChild->Type(); if (iType == TiXmlNode::TINYXML_ELEMENT) { TiXmlNode* node = pChild; while (node) { std::wstring sNodeValue = elex::strings::ascllToUnicode(std::string(node->Value())); if (pObject->isNodeExist(sNodeValue)) //读取一个语言节点下的子节点 { TiXmlNode* curNode = NULL; curNode = node->FirstChild(); while (curNode) { TiXmlAttribute* pAttr = curNode->ToElement()->FirstAttribute(); std::vector<XMLData> temData; if (pAttr) { XMLData nodeData; while (pAttr) //一个节点 { std::wstring sKey; sKey = elex::strings::ascllToUnicode(std::string(pAttr->Name())); if (lstrcmp(sKey.c_str(),L"id")==0) { nodeData.sKey = elex::strings::ascllToUnicode(std::string(pAttr->Value())); } else if(lstrcmp(sKey.c_str(),L"value")==0) { nodeData.sValue = elex::strings::ascllToUnicode(std::string(pAttr->Value())); } pAttr = pAttr->Next(); } temData.push_back(nodeData); } pObject->callBackData(temData); curNode = curNode->NextSiblingElement(); //parseXmlData(node,pObject); } } node = node->NextSiblingElement(); } }else if( iType == TiXmlNode::TINYXML_TEXT) { std::cout << pChild->Value()<< std::endl; } }