xml读取节点

<?xml version="1.0" encoding="utf-8"?>
<tplcd type="1" product="JAZZ">
  <lcd_specification>
    <DefaultPicture>jazz_default.bmp</DefaultPicture>
    <!--video or command -->
    <PanelMode>command</PanelMode>
    <PanelWidth>1080</PanelWidth>
    <PanelHeight>1920</PanelHeight>
    <HPulseWidth>0x02</HPulseWidth>
    <HBackPorch>0xF0</HBackPorch>
    <HFrontPorch>0xF0</HFrontPorch>
    <VPulseWidth>0x02</VPulseWidth>
    <VBackPorch>0x10</VBackPorch>
    <VFrontPorch>0x1C</VFrontPorch>
    <!--0x01:board pwr supply  ;  0x02 panel pwr supply; 0x03: advance-->
    <PWMMode>0x02</PWMMode>
    <ColorOrder>BGR</ColorOrder>
    <DPhyNum>0x02</DPhyNum>
  </lcd_specification>

 

    TiXmlDocument doc(XmlFile);
    bool loadOkay = doc.LoadFile();

    if (!loadOkay)
    {
    MessageBox(_T("Could not load file"));    
    exit(EXIT_FAILURE);
    return FALSE;
    }

    //    doc.Print( stdout );
    ofstream outFile;
    outFile.open("test.log",ios_base::app);
    if (!outFile.is_open())//
    {
        cout << "open OUTPUT file error";
        cout << "program terminating.\n";
    
    }
    TiXmlElement* tplcdElement = doc.RootElement();

    TiXmlElement *Lcd_specific = tplcdElement->FirstChildElement("lcd_specification");
    if (Lcd_specific==nullptr)
    {
        MessageBox(_T("NO lcd_specification"));
        return FALSE;
    }

    
    
    TiXmlElement *lspec = Lcd_specific->FirstChildElement();//子节点
    outFile << lspec->Value() << lspec->GetText() << endl;//略去

    TiXmlElement *lllm = lspec->NextSiblingElement();    //
    for (lllm = lspec->NextSiblingElement(); lllm != nullptr; lllm = lllm->NextSiblingElement())//lcd_specification read
    {

        outFile << lllm->Value() << " " << lllm->GetText() << endl;
     
        if (!strncmp(lllm->Value(), "PanelWidth", strlen("PanelWidth")))
        {
            Lcd_Specification.PanelWidth = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "PanelHeight", strlen("PanelHeight")))
        {
            Lcd_Specification.PanelHeight = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "PanelMode", strlen("PanelMode")))
        {
            if (!strncmp(lllm->GetText(), "command", strlen("command")))
            {
                Lcd_Specification.PanelMode = 0;// 
            }
            else if (!strncmp(lllm->GetText(), "video", strlen("video")))
            {
                Lcd_Specification.PanelMode = 1;// 
            }

        }
        if (!strncmp(lllm->Value(), "HPulseWidth", strlen("HPulseWidth")))
        {
            Lcd_Specification.HPulseWidth = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "HBackPorch", strlen("HBackPorch")))
        {
            Lcd_Specification.HBackPorch = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "HFrontPorch", strlen("HFrontPorch")))
        {
            Lcd_Specification.HFrontPorch = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }

        if (!strncmp(lllm->Value(), "VPulseWidth", strlen("VPulseWidth")))
        {
            Lcd_Specification.VPulseWidth = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "VBackPorch", strlen("VBackPorch")))
        {
            Lcd_Specification.VBackPorch = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "VFrontPorch", strlen("VFrontPorch")))
        {
            Lcd_Specification.VFrontPorch = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "PWMMode", strlen("PWMMode")))
        {
            Lcd_Specification.PWMMode = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }
        if (!strncmp(lllm->Value(), "ColorOrder", strlen("ColorOrder")))
        {
            if (!strncmp(lllm->GetText(), "BGR", strlen("ColorOrder")))
            {
                Lcd_Specification.ColorOrder = 1;
            }
            else if (!strncmp(lllm->GetText(), "RGB", strlen("ColorOrder")))
            {
                Lcd_Specification.ColorOrder = 0;
            }

        }
        if (!strncmp(lllm->Value(), "DPhyNum", strlen("DPhyNum")))
        {
             Lcd_Specification.DPhyNum = strtoul(lllm->GetText(), NULL, 0);//str类型转ulong
        }

    }

 附上经典历程网址http://www.cnblogs.com/ziwuge/archive/2011/08/10/2133534.html

这个温度也很不错http://wenku.baidu.com/link?url=9zPLXHr1PzX3I5oYeCizHe1jTbLqaeL13OTou0YIMaEKtPrwXcnyNIqOcOc2pCqV2SfikG4K8KyYu76x7bxttmakqsrbDaQMT9hrCjCnrTO

posted @ 2016-09-22 17:32  xifengIB  阅读(202)  评论(0编辑  收藏  举报