C++プログラムでXMLファイルを読み取ろうとしています。 XMLファイルは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<myprogram>
<configuration>
<window>
<height> 300 </height>
<width> 500 </width>
</window>
</configuration>
</myprogram>
今、私はXMLファイルを見て、次のようにそれを読むことができます:
ifstream in("mydata.xml");
//ignore the <?xml line
in.ignore(200, '\n');
//i know that the first value i want is the window height so i can ignore <myprogram> <configuration> and <window>
//ignore <myprogram>
in.ignore(200, '\n');
//ignore <configuration>
in.ignore(200, '\n');
//ignore <window>
in.ignore(200, '\n');
string s; int height;
//okay, now i have my height
in >> s >> height;
一般に、これは悪い考えのように思われ、XMLファイルの変更方法を実際に制限します。上記の解決策は非常に手作業であり、XMLに何か変更があった場合、それを読み取る方法全体を変更する必要があるようです。
これを行うより良い方法はありますか?
あなたのためにそれを行ういくつかのライブラリを使用することができます。 Windowsプラットフォームで作業している場合、 [〜#〜] msxml [〜#〜] を使用できます。これは既にシステムの一部です。
次の質問を確認してください。 C++でXMLファイルを読み書き
XMLパーサーが必要になります。そこにはたくさんあります:
私の個人的なお気に入りはpugiXMLですが、それは個人的な好みの問題です。
ブーストプロパティツリーはxmlで非常にうまく機能するので、それを使用します。
マルチプラットフォームのソースでは、通常Qt XMLリーダーを使用します。
次の3つの読み方があります。
Windows専用のソフトウェアを作成する場合は、MSXML 6を使用する必要があります。WindowsXP SP3 MSXML 6. はOSの一部です。
Linuxでは、 libxml2 を使用する必要があります。
XMLを解析する機能を備えたPOCOライブラリを使用できます