Ich habe folgende XML-Daten und ich möchte durch Boost Xml Parser analysieren.Boost und Xml Parsing
<?xml version="1.0" encoding="UTF-8"?>
<applications>
<application>
<id>1</id>
<platform>linux-x64</platform>
<version>2.4</version>
</application>
<application>
<id>2</id>
<platform>windows</platform>
<version>2.5</version>
</application>
<application>
<id>3</id>
<platform>linux</platform>
<version>2.6</version>
</application>
</applications>
Ich habe unten Boost-Code geschrieben, aber ich lese nur das erste Kind von „Anwendungen“ und nicht in der Lage anderen beiden Childs zu lesen. Jedes Mal erhalten innere Schleifen die Daten des ersten Kindes.
boost::property_tree::ptree pt;
boost::property_tree::read_xml(sModel, pt); // sModel is filename which contains above xml data
BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("applications"))
{
std::string key = v.first.data();
std::string Id, platform, version;
if (key == std::string("application"))
{
BOOST_FOREACH(boost::property_tree::ptree::value_type &v_, pt.get_child("applications.application"))
{
std::string app_key = v_.first.data();
std::string app_value = v_.second.data();
if (app_key == std::string("id"))
pkgId = app_value;
else if (app_key == std::string("platform"))
platform = app_value;
else if (app_key == std::string("version"))
version = app_value;
}
}
}
Hier bekomme ich jedes mal die Plattform als "linux-x64". Kann jemand sagen, wie man alle Kinder durch dieses Boost-XML liest?
Vielen Dank im Voraus.
ist es nicht wirklich ein Boost-XML-Parser. PropertyTree bietet eine rudimentäre Unterstützung für das Laden von XML über einen modifizierten RapidXML-Parser, unterstützt jedoch den Großteil von XML nicht und ist, wie Sie sehen, beim Zugriff auf die Daten ein wenig unsicher. –
@SebastianRedl danke für die Verbreitung des Evangeliums. Ich bin froh, dass es allgemein bekannt wird. Ich würde nicht sagen, Datenzugriff ist zweifelhaft; in der Tat ist es ziemlich nett für den Zugriff auf Eigentum. (Siehe zB [Vermeidung von Loop-Raserei] (https://stackoverflow.com/questions/47013164/boostproperty-tree-parsing-of-complex-xml-strucure/47019176#47019176) und [Übersetzer] (https: // stackoverflow. com/a/43769414/85371)). – sehe