所以我知道Boost.Qi XML parsing上有正式的教程但是我很难得到如何解析它的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 ..(我需要的是简单的 - 调用一个函数(调用与host()的file()标签相同的名称)我需要发送功能对象如:
typedef boost::variant<int, std::string, void*> variant_type;
std::map<std::string, variant_type> tagObj;
tagObj["url"] = 10;
那么 - 如何使boost.Qi解析我的XML并在解析时调用我的函数?
答案 0 :(得分: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
,可以接受folder name
,version
url
等内容,然后来自example的代码或多或少应该是相同 - 您需要更改xml_mini_printer以进行输出。我将自己作为一个练习。如果我到处都会更新。