gpt4 book ai didi

c++ - 如何使boost ptree以相同的方式解析xml和json?

转载 作者:行者123 更新时间:2023-11-27 23:29:20 30 4
gpt4 key购买 nike

所以让我们看一下经过修改的一点 example代码:

#include <stdio.h>
#include <iostream>
#include <fstream>
#include <boost/foreach.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>

void load(const std::string &file_path)
{
using boost::property_tree::ptree;
ptree pt;
std::ifstream script;
script.open(file_path.c_str());
read_xml(script, pt);
BOOST_FOREACH(boost::property_tree::ptree::value_type &v,
config.get_child("config.servecies"))
{
std::cout
<< "First data: " << v.first.data() << std::endl
<< "Second data: " << v.second.data() << std::endl;
}

}

我用这样的 xml 试了一下:

<config>
<servecies>
<module>file</module>
<module>Admin</module>
<module>HR</module>
<notModule>MyNotModule</notModule>
</servecies>
</config>

它打印:

First data: module
Second data: file
First data: module
Second data: Admin
First data: module
Second data: HR
First data: notModule
Second data: MyNotModule

但是当我尝试这样的 json 文件时(通过 this web tool 从这个 xml 创建):

{
"config": {
"name": "myconfig",
"servecies": {
"module": [
"file",
"Admin",
"HR"
],
"notModule": "MyNotModule"
}
}
}

它打印:

First data: module
Second data:
First data: notModule
Second data: MyNotModule

如何使 boost property_tree 在解析 XML 时在 JSON 上产生相同的结果?如何确定 value_type 是否是某种一维数组并对其进行迭代?

最佳答案

How to make boost property_tree produce same results on JSON as it parses XML?

让 Boost.PropertyTree 输出 JSON。然后它将能够输入该 JSON 文件。

Boost.PropertyTree 用于存储属性。这是一种以人类可读格式保存属性并在以后恢复这些属性的方法。

不是一种制作快速而肮脏的 JSON/XML 阅读器的方法。它以特定格式写入数据,当它被提供要读取的数据时,它希望它所提供的数据是它写的。如果您尝试将任何旧的 JSON 插入其中,它不一定会返回合理的信息。它写入有效的 JSON,但该 JSON 的结构特定于 PropertyTree,并且读取代码将期望该结构存在。

旁注:我认为网络工具不是很好,因为它向 JSON 文件添加了原始 XML 中不存在的信息。

关于c++ - 如何使boost ptree以相同的方式解析xml和json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644597/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com