如何用C++实现参数名称和参数值的XML解析

如何用C++实现参数名称和参数值的XML解析,c++,c++11,C++,C++11,我收到一个带有凭据的xml文件,我需要在c++11中解析它的值。 问题是我无法解析此特定的xml格式1: <Parameters> <Parameter ParameterName="AccessKey" ParameterValue="ABC"/> <Parameter ParameterName="SecretKey" ParameterValue="XYZ"/> </Parameters> 我熟悉boost::prope

我收到一个带有凭据的xml文件,我需要在c++11中解析它的值。 问题是我无法解析此特定的xml格式1:

<Parameters>
    <Parameter ParameterName="AccessKey" ParameterValue="ABC"/> 
    <Parameter ParameterName="SecretKey" ParameterValue="XYZ"/> 
</Parameters>
我熟悉boost::property_tree,但我只能解析格式2以下的格式:

<Parameters>
    <AccessKey>ABC</AccessKey>
    <SecretKey>XYZ</SecretKey>
</Parameters>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
namespace pt = boost::property_tree;

bool getCredentialsfromXml(const std::string &xmlFileName, Credentials& credentials)
{   
    pt::ptree tree;
    pt::read_xml(xmlFileName, tree);

    // 1. AccessKey
    credentials.m_accessKey = tree.get_optional<std::string>("Parameters.AccessKey");

    // 2. SecretKey
    credentials.m_secretKey = tree.get_optional<std::string>("Parameters.SecretKey");

    return true;
}
下面是我用来解析xml格式2的代码:

<Parameters>
    <AccessKey>ABC</AccessKey>
    <SecretKey>XYZ</SecretKey>
</Parameters>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
namespace pt = boost::property_tree;

bool getCredentialsfromXml(const std::string &xmlFileName, Credentials& credentials)
{   
    pt::ptree tree;
    pt::read_xml(xmlFileName, tree);

    // 1. AccessKey
    credentials.m_accessKey = tree.get_optional<std::string>("Parameters.AccessKey");

    // 2. SecretKey
    credentials.m_secretKey = tree.get_optional<std::string>("Parameters.SecretKey");

    return true;
}
有没有办法修改我的代码来解析xml格式1? 或者用其他方法在c++11中解析xml格式1

提前谢谢

如果您想坚持使用boost::Property_树,而不需要理解和解析更多XML,那么下面的stackoverflow答案可能会对您有所帮助:


新格式使用XML属性,而旧格式仅使用XML元素。你不需要什么都知道。但是你需要知道像属性这样的技术术语,这样你就可以像我一样用谷歌搜索了-