C++ 解析XML';s带增压树,不带标签

C++ 解析XML';s带增压树,不带标签,c++,visual-studio,boost,xml-parsing,ptree,C++,Visual Studio,Boost,Xml Parsing,Ptree,我想知道BoostPtree是否允许在不知道属性标记的情况下解析.xml文件。我有一个XML文件,它将定期使用新标记、新数据进行更新,甚至删除某些标记。这些常规的更改促使我考虑在不硬编码属性名的情况下解析文件。是否有任何方法可以读取XML文件中的所有数据而不声明标记名?感谢您的帮助 ptree不是解析XML的理想工具,但是Boost与我的项目的其余部分集成在一起,使用libxml2或另一个解析器会非常费劲 对不起,那没有道理 只有标题选项,还有很多非常轻的选项。看 由于Boost属性树显然不是您

我想知道BoostPtree是否允许在不知道属性标记的情况下解析.xml文件。我有一个XML文件,它将定期使用新标记、新数据进行更新,甚至删除某些标记。这些常规的更改促使我考虑在不硬编码属性名的情况下解析文件。是否有任何方法可以读取XML文件中的所有数据而不声明标记名?感谢您的帮助

ptree不是解析XML的理想工具,但是Boost与我的项目的其余部分集成在一起,使用libxml2或另一个解析器会非常费劲

对不起,那没有道理

只有标题选项,还有很多非常轻的选项。看

由于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);
}
#包括
int main(){
boost::property_tree::ptree pt;
std::ifstream ifs(“input.xml”);
读取xml(ifs,pt);
编写xml(std::cout,pt);
}
我也阅读了boost文档,但似乎找不到任何东西

我从这里开始:。关注局限性。并不是所有的限制都是明确的(见RadidXML文档)

你知道我可以看到的Boost如何获取子节点或其他C++解析器吗? 请参阅上面的第一个链接:)

另见:

  • 搜索我的答案
  • 对于任何节点也一样——注意,我们从不指定要读取的节点——因为这根本不可能。许多答案详细说明了如何通过动态路径找到节点,如果这是您真正想要的
  • 我的一些——其中大部分是针对Boost Property Tree无法解决的问题做出的回答
  • 其他一些图书馆,只是为了了解它们什么时候合适/好/不好

请帮自己一个忙,使用XML库。属性树不是XML。此外,读取文件时始终不说明标记名。@sehe感谢您的回复!我知道ptree不是解析XML的理想工具,但是Boost与我的项目的其余部分集成得非常紧密,因此使用libxml2或其他解析器会非常费力。当我使用read_xml时,我似乎必须声明标记名。似乎没有一种方法可以读取父节点下的所有子节点并存储它们。我也阅读了boost文档,但似乎找不到任何东西。你知道BooD如何得到子节点或其他C++解析器吗?这真的很有用,你真了不起!谢谢。谢谢@AlexiaM。。也请考虑