tinyxml

<SysMonitor>
<DumpDir>/tmp</DumpDir>
<Monitor>
<app keepalive='false'>/root/demo/App</app>
</Monitor>
</SysMonitor>
int LoadSysmonitorConfig(void)
{
    appInfoList = std::make_shared<EAppInfoList>();

    tinyxml2::XMLDocument doc;
    int rtn = doc.LoadFile("sysmonitor.xml");
    if ( 0 != rtn )
    {
        printf("LoadConfig, load sysmonitor.xml failedn");
        return -1;
    }

    dumpDir = std::string(doc.FirstChildElement( "SysMonitor" )->FirstChildElement( "DumpDir" )->GetText()) + std::string("/");
    //printf("dumpDir = [%s]n", dumpDir.c_str());
    
    for( tinyxml2::XMLElement* ele = doc.FirstChildElement( "SysMonitor" )->FirstChildElement( "Monitor" )->FirstChildElement(); ele; ele = ele->NextSiblingElement() )
    {    
        std::shared_ptr<EAppInfo> appInfo = std::make_shared<EAppInfo>();
        ele->QueryBoolAttribute("keepalive", &appInfo->keepalive);        
        appInfo->app = std::string(ele->GetText());

        //printf("app = [%s], keepalive = [%d]n", appInfo->app.c_str(), appInfo->keepalive);
        appInfoList->push_back(appInfo)
    }
    
    
    return 0;
}