2010-09-11 25 views
18

說我有這樣的XML格式:如何在Boost.PropertyTree中分析屬性?

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

如何閱讀使用Boost.PropertyTree的屬性?

+0

完整代碼示例:http://stackoverflow.com/a/14010792/438039 – 2014-02-11 19:25:45

回答

10

如果你的問題是獲得屬性:

存儲在子項的XML元素都 的屬性。有 是 屬性節點中每個屬性的一個子節點。如果沒有 屬性,則不保證存在 節點或存在 。

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

所以單純從xmlattr標籤得到他們。

+0

非常感謝。我如何準確訪問它?我真的很想看一個例子。 – 2010-09-12 08:21:26

+1

請問'BOOST_FOREACH(ptree :: value_type&v,pt.get_child(「widget.xmlattr」))屬性.insert(std :: make_pair(v.first.data(),v.second.data())'是嗎? – 2010-09-12 11:31:28

+0

我很希望看到一個不使用BOOST_FOREACH的示例,純粹的C++ 98如何,如果不是這樣,C++ 11也可以,但並不理想,學習庫的一部分是看到正在使用的數據類型和自動隱藏學習的細節 – Mitch 2016-09-27 20:36:35

50

如果XML有這樣的內容:

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

使用boost ::屬性代碼:

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

噢,它的醜陋!

+1

' mod xxx'看起來不是格式良好的xml。 – ThomasMcLeod 2013-02-15 17:05:27