gpt4 book ai didi

c++ - 如何使用 boost.Qi 解析此类 XML 并调用名为标签的函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:02 24 4
gpt4 key购买 nike

所以我知道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() 的文件())我需要发送函数对象,如:

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

那么 - 如何让 boost.Qi 解析我的 XML 并在解析时调用我的函数?

最佳答案

我还没有一个有效的例子(我今天早上也在研究 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 nameversion url 等内容然后代码来自example然后应该或多或少相同 - 您将需要更改输出的 xml_mini_printer。作为练习,我将亲自尝试一下。如果我到任何地方都会更新。

编辑:呸,我卡住了!

关于c++ - 如何使用 boost.Qi 解析此类 XML 并调用名为标签的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281885/

24 4 0