我需要使用RapidXML讀取簡單的XML文件。我已經將XML文件加載到一個字符串變量並將其傳遞給解析器。我需要獲取所有節點的名稱和值,如果存在的話。 我的問題是以下值最終爲重複:使用RapidXML解析XML文件時獲取重複節點值
- stepID->值
- stepHeading1->值
- stepText->值
這裏的描述該問題的圖片:
爲什麼米如果stepID,stepHeading1和stepText節點沒有任何子節點,y代碼會給我所有這些重複的值嗎?另外,爲什麼代碼中沒有給出重複的節點名稱,當節點值是這樣的?下面------------
<?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文件------------下面------------代碼
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;
}
修復代碼格式化 –