C++XML読み出し


本文は主に紹介する:C++はライブラリ関数TinyXmlを利用して、XMLファイルを読み取る.
一、TinyXmlライブラリファイルのダウンロード
TinyXmlライブラリファイルは比較的簡単で、tinyxmlが含まれています.libと2つのtinyxml.h、tinystr.hファイル、ライブラリファイルダウンロードアドレス:http://download.csdn.net/detail/hong__fang/8411043
二、VS<1>を配置する工程目録の下にincludeフォルダを作成し、二つを作成する.hファイルはincludeフォルダに入れます;<2>プロジェクトディレクトリの下にlibフォルダを作成し、libファイルをlibフォルダに入れる.<3>プロパティページ構成プロパティ->VC++ディレクトリ->インクルードディレクトリにincludeパスを追加します.<4>プロパティページ構成プロパティ->VC++ディレクトリ->ライブラリディレクトリにlibパスを追加します.<5>プロパティ・ページ・リンク->入力->依存項目の追加にtinyxmlを入力します.lib;
三、読み出しプログラムは、読み出したいXMLを以下のように仮定する.
<?xml version="1.0" encoding="gb2312"?>  
<Node>  
  <Alg>  
    <CName>      </CName>  
    <EngName>ImageProcessingParameters</EngName>  
  </Alg>  
  <Parameters>  
    <InImg1 type="string" describe="   tif    1">E:\GF1_WFV1_20140104_L1A0000145339_8_480_1131-1.tif</InImg1>  
    <InImg2 type="string" describe="   tif    2">E:\GF1_WFV1_20140104_L1A0000145339_8_480_1131-2.tif</InImg2>  
    <InImg3 type="string" describe="   tif    3">E:\GF1_WFV1_20140104_L1A0000145339_8_480_1131-3.tif</InImg3>  
    <InImg4 type="string" describe="   tif    4">E:\GF1_WFV1_20140104_L1A0000145339_8_480_1131-4.tif</InImg4>  
    <AOItxtPath type="string" describe="txt    ">E:\1966427930086c.shp</AOItxtPath>  
    <ShapePath type="string" describe="      ">E:\\1966427930086c.shp</ShapePath>  
    <ClassifyZero type="int" describe="    0   ">0</ClassifyZero>  
    <IpBand type="int[]" describe="          ">1111</IpBand>  
    <OutImg type="string" describe="          ">E:\temp.tif</OutImg>  
    <StatisticFile type="string" describe="        ">E:\temp.txt</StatisticFile>  
  </Parameters>  
</Node>  

まずcppファイルにヘッダファイルinclude,読み出しプログラムは以下の通りである.
ReadXML(CString XMLPath)  
{  
    //char path[50];  
   // strcpy_s(path,XMLPath.c_str());   
    TiXmlDocument* Document = new TiXmlDocument();  
    Document->LoadFile(XMLPath);//  JDclassify.xml  
  
    if(Document==NULL)  
    {  
        AfxMessageBox("  XML    !");  
        return FALSE;  
    }  
    TiXmlElement* nodeElement=Document->RootElement();//     Node  
    TiXmlElement* AlgElement=nodeElement->FirstChildElement();//  Alg    
    TiXmlElement* ParElement=AlgElement->NextSiblingElement();//  Parameters    
    TiXmlElement* FirstElement=ParElement->FirstChildElement();//  Parameters            
  
    int Flag,m_classifyzero;  
    CString InimgBand1,InimgBand2,InimgBand3,InimgBand4,charfile,CutVectorPath,Outimgstatisticfile;  
      
    while(FirstElement)  
    {  
        //cout<<FirstElement->Value()<<" : "<<FirstElement->GetText()<<endl;  
        InimgBand1.Format("%s",FirstElement->GetText()); //  1    
  
        FirstElement=FirstElement->NextSiblingElement(); //  2    
        InimgBand2.Format("%s",FirstElement->GetText());  
  
        FirstElement=FirstElement->NextSiblingElement(); //  3    
        InimgBand3.Format("%s",FirstElement->GetText());  
  
        FirstElement=FirstElement->NextSiblingElement(); //  4    
        InimgBand4.Format("%s",FirstElement->GetText());  
  
        FirstElement=FirstElement->NextSiblingElement(); //        
        charfile.Format("%s",FirstElement->GetText());  
  
        FirstElement=FirstElement->NextSiblingElement();  //        
        CutVectorPath.Format("%s",FirstElement->GetText());  
  
        FirstElement=FirstElement->NextSiblingElement();  
        m_classifyzero = atoi(FirstElement->GetText()); //    0     
  
        FirstElement=FirstElement->NextSiblingElement();  
        Flag = atoi(FirstElement->GetText());    //          
  
  
        FirstElement=FirstElement->NextSiblingElement();  
        Outimg.Format("%s",FirstElement->GetText()); //        
  
        FirstElement=FirstElement->NextSiblingElement();  
        statisticfile.Format("%s",FirstElement->GetText()); //          
        break;  
    }  
  
    return TRUE;  
}  

ノードのプロパティを読み込みます.
		TiXmlElement *FirstElement = ParElement->FirstChildElement();
		cout<<FirstElement->Value()<<endl; //      
		
		TiXmlAttribute *FirstAtt = FirstElement->FirstAttribute(); //    
		cout<<FirstAtt->Value()<<endl;

		FirstAtt = FirstAtt->Next(); //     
		cout<<FirstAtt->Value()<<endl;

C++读取XML_第1张图片