Мне нужно прочитать простой XML-файл с использованием RapidXML. Я загрузил XML-файл в строковую переменную и передал его в синтаксический анализатор. Мне нужно получить все имена и значения узлов, если они существуют. Моя проблема заключается в том, что следующие значения в конечном итоге как дублирующий:Получение повторяющихся значений узлов при анализе XML-файла с помощью RapidXML
- stepID-> Значение
- stepHeading1-> Значение
- stepText-> Значение
Вот картинка с описанием проблемы:
Почему м y code дают мне все эти дублированные значения, если у узлов stepID, stepHeading1 и stepText нет дочерних узлов? Кроме того, почему код не дает мне дубликаты имен узлов, когда значения узла оказываются такими?
------------ файл XML ниже ------------
<?xml version="1.0" encoding="UTF-8"?>
<game>
<step>
<stepID>Name</stepID>
<stepHeading1>Title1</stepHeading1>
<stepHeading2></stepHeading2>
<stepHeading3></stepHeading3>
<stepHeading4></stepHeading4>
<stepHeading5></stepHeading5>
<stepHeading6></stepHeading6>
<stepText>First Step First Step First Step </stepText>
<link>
<linkStepID>First Link Name</linkStepID>
<linkText>First Link Text</linkText>
</link>
</step>
</game>
------------ код ниже ------------
xml_document<>doc;
doc.parse<0>(&(dataForParser1.getLoadedXMLfile())[0]);
xml_node<> *rootNode = doc.first_node();
xml_node <> *pStep = 0;
xml_node <> *pDiff = 0;
xml_node <> *pLink = 0;
for (xml_node <> *pStep = rootNode->first_node("step"); pStep; pStep = pStep->next_sibling())
{
cout << pStep->name() << " " << pStep->value() << endl;
for (xml_node <> *pDiff = pStep->first_node(); pDiff; pDiff = pDiff->next_sibling())
{
cout << pDiff->name() << " " << pDiff->value() << endl;
for (xml_node <> *pLink = pDiff->first_node(); pLink; pLink = pLink->next_sibling())
{
cout << pLink->name() << " " << pLink->value() << endl;
}
}
cout << endl << endl;
}
исправить форматирование кода –