2

したがって、 Boost.Qi XML 解析に関する公式のチュートリアルがあることは知っていますが、そのような XML を解析する方法がまったくわかりません。

<host url="http://www.site.com"/>
<run app="myApp" version=443 url="/folderName/innerFolder/myApp.exe"/>
<folder name="folderName" version=443>
<folder name="innerFolder" version=443>
<file name="innerFile.txt" version=443 url="/folderName/innerFolder/innerFile.txt">
<file name="myApp" version=443 url="/folderName/innerFolder/myApp.exe"/>
</folder>
<file name="fileName"  url="/folderName/fileName.exe" version=442/>
</folder>

それは非常に単純に見えますが、私は自分のxmlを解析する方法を知りません..(必要なのは単純です-関数を呼び出します(ホスト()のファイル()のようなタグと同じ名前で呼び出されます)関数オブジェクトに送信する必要がありますお気に入り:

typedef boost::variant<int, std::string, void*> variant_type;
std::map<std::string, variant_type> tagObj;
tagObj["url"] = 10;

それでは - boost.Qi で XML を解析し、解析中に関数を呼び出す方法を教えてください。

4

1 に答える 1

2

私はまだ実用的な例を持っていません (今朝も xml パーサーの例を調べています) が、このルールを変更したいと思います。

qi::rule<Iterator, std::string(), ascii::space_type> start_tag;

qi::rule<Iterator, tag_struct(), ascii::space_type> start_tag;

ここで、tag_struct はなどをBOOST_FUSION_ADAPT_STRUCT受け入れるです。次に、のコードは多かれ少なかれ同じになるはずです。出力用に xml_mini_printer を変更する必要があります。私はこれを練習として自分でやってみます。どこかに行ったら更新します。folder nameversion url

編集:私は立ち往生しています!

于 2011-03-12T10:46:20.717 に答える