Как проанализировать XML с ParameterName и ParameterValue с помощью C ++ - PullRequest
0 голосов
/ 04 июня 2019

Я получаю 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>

Ниже приведен код, который я использовал для разбора формата xml 2:

#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?или любой другой способ разбора xml формата 1 в c ++ 11?

Заранее спасибо!

1 Ответ

1 голос
/ 04 июня 2019

Если вы хотите придерживаться boost::propery_tree и вам не нужно понимать (и анализировать) больше XML, возможно, вам поможет следующий ответ stackoverflow: Как анализируются атрибуты в Boost.PropertyTree?

Ваш новый формат использует XML атрибуты , тогда как ваш старый формат использовал только XML elements . Вам не нужно знать все. Но вам нужно знать технические термины (например, attribute ), чтобы вы могли использовать Google, как я. ; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...