C++XML読み出し
5264 ワード
本文は主に紹介する: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を以下のように仮定する.
まずcppファイルにヘッダファイルinclude,読み出しプログラムは以下の通りである.
ノードのプロパティを読み込みます.
一、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;