2012-08-27 11 views
7

एक XML फ़ाइल पढ़ने के लिए TinyXML का उपयोग करना। मैं कई तत्वों पर लूप करना चाहता हूं लेकिन किसी कारण से यह केवल पहले तत्व पर लूप करता है। एक छोटी उदाहरण xml फ़ाइल होगा:तत्वों पर TinyXML लूपिंग

<root> 
    <wave_manager name="WaveManager01"> 
    </wave_manager> 
    <wave_manager name="WaveManager02"> 
    </wave_manager> 
</root> 

कोड पाश के लिए है:

TiXmlElement* root = _waveDoc.FirstChildElement("root"); 
for(TiXmlElement* e = root->FirstChildElement("wave_manager"); e != NULL; e = root->NextSiblingElement("wave_manager")) 
{ 
    string wmName = e->Attribute("name"); 

} 

तो यह केवल एक बार लूप और wmName WaveManager01 दिखाने करता है, लेकिन उसके बाद पाश के लिए मौजूद है।

+1

बाह, nvm:

यहाँ सही कोड है। मुझे लगता है कि मुझे ई-> NextSiblingElement() रूट की आवश्यकता नहीं है-> NextSiblingElement()। जब मैं पोस्ट करता हूं तो मुझे जवाब मिल जाता है जब नफरत है। – user441521

+11

एक उत्तर के रूप में पोस्ट करें, एक टिप्पणी नहीं। –

+0

@ user441521, कृपया इसे एक उत्तर के रूप में लिखें और इसे स्वीकार्य के रूप में चिह्नित करें ताकि यह प्रश्न अनुत्तरित अनुभाग में न हो। धन्यवाद :) –

उत्तर

2

आपका for कथन प्रत्येक पुनरावृत्ति पर रूट करने के लिए e तत्व को रीसेट कर रहा है। यह सूची में अगले तत्व पर जाना चाहिए - e

TiXmlElement* root = _waveDoc.FirstChildElement("root"); 

for(TiXmlElement* e = root->FirstChildElement("wave_manager"); e != NULL; e = e->NextSiblingElement("wave_manager")) 
{ 
    string wmName = e->Attribute("name"); 

} 
संबंधित मुद्दे