2010-09-11 6 views
18

Sagen, ich habe dieses XML-Format:Wie werden Attribute in Boost.PropertyTree geparst?

<Widget type="SomeWidget" name="foo"> 
    <Event name="onmouseover"> 
     dostuff(); 
    </Event> 
</Widget> 

Wie lese ich die Attribute Boost.PropertyTree verwenden?

+0

Full Codebeispiel hier: http://stackoverflow.com/a/14010792/438039 –

Antwort

10

Wenn Ihr Problem ist Attribut zu erhalten:

Die Attribute eines XML-Element sind im Unterschlüssel gespeichert. Dort ist ein untergeordneter Knoten pro Attribut im Attributknoten. Das Vorhandensein des Knotens ist nicht garantiert oder erforderlich, wenn keine Attribute vorhanden sind.

Vom doc http://www.boost.org/doc/libs/1_44_0/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.xml_parser

So bekommen sie nur aus dem xmlattr-Tag.

+0

Vielen Dank. Wie kann ich genau darauf zugreifen? Ich würde gerne ein Exemplar sehen. –

+1

Wird 'BOOST_FOREACH (ptree :: value_type & v, pt.get_child (" widget.xmlattr ")) attributes.insert (std :: make_pair (v.first.data(), v.second.data())' tun? –

+0

Ich würde gerne ein Beispiel sehen, das BOOST_FOREACH nicht verwendet.Wie wäre es mit reinem C++ 98? Wenn nicht, wäre C++ 11 auch in Ordnung, aber nicht ideal.Der Teil des Lernens einer Bibliothek sieht die verwendeten Datentypen und blendet sie automatisch aus die Details des Lernens – Mitch

50

Wenn xml solcher Inhalte hat:

<mode fullscreen="true">mode xxx</mode> 

Verwendung boost :: Objektcode:

get<string>("mode.<xmlattr>.fullscreen") 

Oh ja, es ist hässlich!

+1

' mod xxx ' scheint nicht wohlgeformt zu sein xml. – ThomasMcLeod

Verwandte Themen