Есть xml файл, пытаюсь парсить его. Юзаю RapidXML, смотрел примеры на оф сайте, там везде обращаются к нодам по имени и примеры простенькие. Но вот если у меня большой файл, 800+ строк, и ноды там вложены по разному, вот к примеру кусок файла
<?xml version="1.0"?>
<data grt_format="2.0" document_type="MySQL Workbench Model" version="1.4.4">
<value type="object" struct-name="workbench.Document" id="{C1D1EED9-0895-4E88-B9A7-D71E1D4C4867}" struct-checksum="0x7131bf99">
<value type="object" struct-name="workbench.logical.Model" id="{8AD965A6-D925-4D18-95FC-1616F0B7712F}" struct-checksum="0xf4220370" key="logicalModel">
<value _ptr_="0000000022DAB1F0" type="list" content-type="object" content-struct-name="workbench.logical.Diagram" key="diagrams"/>
<value _ptr_="0000000022D87820" type="dict" key="customData"/>
<value _ptr_="0000000022DAB260" type="list" content-type="object" content-struct-name="model.Marker" key="markers"/>
<value _ptr_="0000000022D85660" type="dict" key="options"/>
<value type="string" key="name"></value>
<link type="object" struct-name="GrtObject" key="owner">{C1D1EED9-0895-4E88-B9A7-D71E1D4C4867}</link>
</value>
<value _ptr_="0000000022DAB110" type="list" content-type="object" content-struct-name="workbench.OverviewPanel" key="overviewPanels"/>
<value _ptr_="0000000022DAB180" type="list" content-type="object" content-struct-name="workbench.physical.Model" key="physicalModels">
<value type="object" struct-name="workbench.physical.Model" id="{A756AA88-707D-4A97-B8B3-9035F7D93E14}" struct-checksum="0x5f896d18">
<value type="object" struct-name="db.mysql.Catalog" id="{96A82A8F-0707-4C91-9959-F4E7CC4E61D7}" struct-checksum="0x82ad3466" key="catalog">
<value _ptr_="0000000022DAB6C0" type="list" content-type="object" content-struct-name="db.mysql.LogFileGroup" key="logFileGroups"/>
<value _ptr_="0000000022DAB7A0" type="list" content-type="object" content-struct-name="db.mysql.Schema" key="schemata">
<value type="object" struct-name="db.mysql.Schema" id="{5CC0352E-3C93-4169-B4AE-99598891D758}" struct-checksum="0x20b94c22">
<value _ptr_="0000000022DABAB0" type="list" content-type="object" content-struct-name="db.mysql.RoutineGroup" key="routineGroups"/>
<value _ptr_="0000000022DABB20" type="list" content-type="object" content-struct-name="db.mysql.Routine" key="routines"/>
<value _ptr_="0000000022DABB90" type="list" content-type="object" content-struct-name="db.mysql.Sequence" key="sequences"/>
<value _ptr_="0000000022DABC00" type="list" content-type="object" content-struct-name="db.mysql.StructuredDatatype" key="structuredTypes"/>
<value _ptr_="0000000022DABC70" type="list" content-type="object" content-struct-name="db.mysql.Synonym" key="synonyms"/>
<value _ptr_="0000000022DABCE0" type="list" content-type="object" content-struct-name="db.mysql.Table" key="tables">
<value type="object" struct-name="db.mysql.Table" id="{F92DDB7E-AC06-48B4-A765-C9D056C7E95B}" struct-checksum="0x4564421a">
<value type="string" key="avgRowLength"></value>
<value type="int" key="checksum">0</value>
<value _ptr_="0000000022DABDC0" type="list" content-type="object" content-struct-name="db.mysql.Column" key="columns">
<value type="object" struct-name="db.mysql.Column" id="{BEA3BA30-156C-4AC3-9D68-FFE4B0509B28}" struct-checksum="0xba88e21c">
<value type="int" key="autoIncrement">0</value>
<value type="string" key="expression"></value>
получается распарсить 5 вложенных нод, то есть дойти сюда
<value _ptr_="0000000022D85660" type="dict" key="options"/>
и соответственно ко всем нодам на етом же уровне
<value type="object" struct-name="workbench.physical.Model"...
а как дальше непонятно. Вот сюда уже дойти не могу
<value type="object" struct-name="db.mysql.Catalog"
Вот так пытаюсь
xml_node<> *rootNode = doc.first_node();
for (xml_node<>* node = rootNode->first_node(); node; node = node->next_sibling())
{
parseNode(node);
}
for (xml_node<>* node = rootNode->first_node()->first_node(); node; node = node->next_sibling())
{
parseNode(node);
for (xml_node<>* nodeTwo = node->first_node(); nodeTwo; nodeTwo = nodeTwo->next_sibling())
{
parseNode(nodeTwo);
}
}
но если добавить еще вложенных циклов, то ошибка доступа к памяти. Гугление не помогло, там примеры на простых файлах. Буду рад любой помощи.