我想知道 Boost Ptree 是否允许在不知道属性标签的情况下解析 .xml 文件。我有一个 XML 文件,它将定期更新新标签、新数据,甚至删除某些标签。这些定期更改促使我考虑在不硬编码属性名称的情况下解析文件。有什么方法可以读取 XML 文件中的所有数据而无需指定标签名称吗?任何帮助表示赞赏!
Ptree 并不是解析 XML 的理想选择,但 Boost 如此集成到我项目的其余部分中,以至于使用 libxml2 或其他解析器会非常费力
抱歉,这没有意义。
有仅标头选项,以及大量非常轻量级的选项。看在 C++ 中我应该使用什么 XML 解析器?
由于 Boost 属性树是简单明了不是您需要的库添加库的感知成本将远远超过与您将遇到的损坏的抽象和不可能的问题作斗争的成本。
当我使用 read_xml 时,似乎我确实必须声明标签名称。似乎没有办法可以读取父节点下的所有子节点并存储它们。
干得好:
#include <boost/property_tree/xml_parser.hpp>
int main() {
boost::property_tree::ptree pt;
std::ifstream ifs("input.xml");
read_xml(ifs, pt);
write_xml(std::cout, pt);
}
我还阅读了 boost 文档,但似乎找不到任何内容。
我从这里开始:https://www.boost.org/doc/libs/1_73_0/doc/html/property_tree/parsers.html#property_tree.parsers.xml_parser。关注局限性。并非所有限制都是明确的(请参阅 RadidXML 文档)。
你知道如何 boost 获取子节点或我可以查看的其他 C++ 解析器吗?
请参阅上面的第一个链接:)
也可以看看:
- 搜索我的答案“不是 xml 库”
- 任何情况都同上使用 XML 的属性树答案- 请注意,我们从不指定要读取的节点 - 因为这是不可能的。许多答案详细说明了如何通过某些动态路径查找节点,如果这就是您真正想要的
- 我的一些使用 PugiXML 的答案- 其中大部分是为了回答 Boost Property Tree 无法处理的问题
- 其他一些库TinyXML, RapidXML,只是为了尝尝它们何时合适/好或不合适
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)