C++ c++;使用带有属性树的boostxml进行简单解析

C++ c++;使用带有属性树的boostxml进行简单解析,c++,xml,visual-studio-2012,boost,C++,Xml,Visual Studio 2012,Boost,我有一个关于boost xml解析的问题: 下面是我的一段Xml: <Clients> <Client name="Alfred" /> <Client name="Thomas" /> <Client name="Mark" /> </Clients> 我用下面的代码读名字: std::string name = pt.get<std::string>("Clients.Client.<xmlatt

我有一个关于boost xml解析的问题:

下面是我的一段Xml:

<Clients>
  <Client name="Alfred" />
  <Client name="Thomas" />
  <Client name="Mark" />
</Clients>

我用下面的代码读名字:

std::string name = pt.get<std::string>("Clients.Client.<xmlattr>.name, "No name");
std::string name=pt.get(“Clients.Client..name,“No name”);
工作正常,但始终检索第一个节点

有没有办法在不循环的情况下获得第二个、第三个节点


感谢您,在属性树中没有查询多值键的工具(部分原因是大多数受支持的后端格式不正式支持重复键)

但是,您可以迭代子元素,因此可以实现自己的查询,如下所示:

for (auto& child : pt.get_child("Clients"))
    if (child.first == "Client")
        std::cout << child.second.get<std::string>("<xmlattr>.name", "No name") << "\n";
for(自动和子对象:pt.get\u子对象(“客户端”))
if(child.first==“客户机”)

std::我可以麻烦你更正你的超链接吗?我无法访问,希望看到内容。提前谢谢!@IdusOrtus该链接对我有效。你能再试一次吗?
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <sstream>
#include <iostream>

using boost::property_tree::ptree;

int main()
{
    std::stringstream ss("<Clients>\n"
        "  <Client name=\"Alfred\" />\n"
        "  <Client name=\"Thomas\" />\n"
        "  <Client name=\"Mark\" />\n"
        "</Clients>");

    ptree pt;
    boost::property_tree::read_xml(ss, pt);

    for (auto& child : pt.get_child("Clients"))
    {
        if (child.first == "Client")
            std::cout << child.second.get<std::string>("<xmlattr>.name", "No name") << "\n";
    }
};