Разбор XML с помощью дерева свойств boost

У меня есть следующий XML-файл, и я хочу сохранить его, используя указанные ниже структуры.

структуры данных:

    struct transitions
    {
     string oldstate;
     string event;
     string newstate;
    };

    struct XML_Diagram
    {
     string diag_name;
     string diag_defaultstate;
     list<string> diag_states;
     list<string> diag_events;
     list<transitions> diag_transitions;
    };

XML-файл:

    <diagram>
      <diagname>DiagaX</diagname>
      <states>
         <state>A</state>
         .............       
      </states>
      <events>
          <event>ev1</event>
          .................
      </events>
      <defaultstate>A</defaultstate>
      <transitions>
          <transition>
              <oldstate>A</oldstate>
              <event>ev1</event>
              <newstate>B</newstate>
          </transition>
          <transition>
              <oldstate>B</oldstate>
              <event>ev2</event>
              <newstate>C</newstate>
          </transition>
          .........................
      </transitions>
    </diagram>

Мне ясно, как я могу получить доступ к diagram.states. Я могу сделать это с помощью следующего кода:

    using boost::property_tree::ptree;
    ptree pt;

    // Get diagram states
    BOOST_FOREACH(ptree::value_type &v, pt.get_child("diagram.states"))
    {
       diag_states.push_back(v.second.data());
    }

Что мне непонятно, так это как я могу получить доступ к данным на уровне diagram.transitions.transition?

Моя проблема в том, что я не мог найти никаких примеров в документация о том, как анализировать более сложные XML-файлы с несколькими уровнями.

6
задан BЈовић 2 January 2012 в 08:04
поделиться