2013-01-15 24 views
10

क्या कोई पगिक्सल नोड ऑब्जेक्ट में बाल-नोड्स विधि है? मैं यह दस्तावेज में नहीं मिल रहा है और इस प्रकार एक इटरेटर का इस्तेमाल किया था कर सकते हैं:बच्चे नोड्स की पगिक्स संख्या संख्या

int n = 0; 
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++; 
+0

कोई चिंता नहीं, मैं इसे अभी इससे पहले कि मैं अपना संदेश यहाँ पढ़ बहाल। उत्कृष्ट कोड के लिए धन्यवाद! – lsdavies

उत्तर

13

कोई बिल्ट-इन समारोह है कि सीधे गणना करने के लिए नहीं है; एक अन्य दृष्टिकोण का उपयोग करने std::distance है:

size_t n = std::distance(xMainNode.children("name").begin(), xMainNode.children("name").end()); 
बेशक

, इस बच्चे नोड्स की संख्या में रेखीय है; ध्यान दें कि सभी बच्चे नोड्स की संख्या की गणना, std::distance(xMainNode.begin(), xMainNode.end()), रैखिक भी है - बाल नोड गिनती के लिए निरंतर समय तक पहुंच नहीं है।

+4

नोट: यह pugixml का लेखक है। – Homer6

+1

देखो, pugixml के लेखक! जबरदस्त हंसी। वैसे, किसी भी व्यक्ति के लिए "नाम" भाग के बिना ऐसा करने में रुचि रखने के लिए, आप बस .children() के हटा सकते हैं। यहां देखें: https://code.google.com/p/pugixml/issues/detail?id=105#c3 – Andrew

1

आप (, कोई दक्षता की गारंटी देता है, हालांकि) एक xpath खोज के आधार पर एक अभिव्यक्ति इस्तेमाल कर सकते हैं:

xMainNode.select_nodes("name").size() 
संबंधित मुद्दे