Boost::Property_tree XML解析
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気です。
さて、今日はXMLの解析並びに記述を行いたいと思います。
もれなく、boostに解析するライブラリがあります。
XML Parse
解析用XMLファイル
<?xml version="1.0" encoding="utf-8"?> <root> <person> <name>山田太郎</name> <address>東京都文京区</address> <gender>漢</gender> <age>42</age> </person> <person> <name>山田花子</name> <address>兵庫県神戸市</address> <gender>女</gender> <age>20</age> </person> </root>
解析用ソースコード
#include <iostream> #include <string> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> using namespace std; using namespace boost::property_tree; class Person{ public: string name; string address; string gender; int age; void parseXML(const ptree::value_type &xml){ name = xml.second.get<std::string>("name"); address = xml.second.get<std::string>("address"); gender = xml.second.get<std::string>("gender"); age = xml.second.get<int>("age"); } void printOut(){ cout << "名前:" << name << endl; cout << "住所:" << address << endl; cout << "性別:" << gender << endl; cout << "年齢:" << age << endl; } }; int main(int argc, char const *argv[]){ ptree pt; read_xml("test.xml",pt); for(const ptree::value_type &person: pt.get_child("root")){ Person *pt = new Person(); pt->parseXML(person); pt->printOut(); } return 0; }
はじめに、ptreeを宣言し、tree構造で確保し、read_xmlにて、データを読み込み、格納します。
ptreeはget_childで子を取得することができます。今回はget_childでタグ("root")を取得しています。
ルートの中にあるparsonにてループを実行し、各要素を取得するようにしています。
次にPersonクラスを作成しています。
各属性の値ですが、xml.second.get
このようにして、xmlを解析することができます。