Navigation

Navigation

Aspose.Words FOSS for .NET में एक छोटा शामिल है Nodes.Navigation दस्तावेज़ के नोड ट्री के भीतर इटरेट करने और स्थिति निर्धारित करने के लिए एक namespace: NodeEnumerator, चाइल्ड नोड्स पर for-each शैली इटरेशन के पीछे का enumerator प्रकार, और DocumentPositionMovement, एक enumeration जो ट्रैवर्सल के दौरान एक नोड की स्थिति दूसरे नोड से कैसे संबंधित है, इसका वर्णन करता है। यह ट्री-मैनीपुलेशन APIs (इन्सर्टिंग, रिमूविंग, और रीऑर्गनाइज़िंग नोड्स) से अलग है जो कवर किए गए हैं the Nodes पेज — यह पेज पहले से मौजूद ट्री में स्थितियों को आगे बढ़ाने और तुलना करने को कवर करता है।


चाइल्ड नोड्स का इटरेशन

कोई भी CompositeNode (कंटेनर नोड्स जैसे Document, Section, Body, और Paragraph के लिए बेस क्लास) अपने तत्काल बच्चों पर GetEnumerator() के माध्यम से for-each शैली के इटरेशन का समर्थन करता है, जो — अपने दस्तावेज़ के अनुसार — नोड के चाइल्ड नोड्स पर for-each शैली के इटरेशन को सपोर्ट करता है। लौटाया गया एनेमरेटर IEnumerator<Node> को इम्प्लीमेंट करता है; इस API सतह में, यह भूमिका NodeEnumerator द्वारा पूरी की जाती है, जो IDocumentPositionListener को भी इम्प्लीमेंट करता है ताकि मूल ट्री के इनेमरेशन के दौरान पोजिशन परिवर्तन को ट्रैक कर सके। NodeEnumerator मानक Dispose() और Reset() मेम्बर्स को IEnumerator<Node> कॉन्ट्रैक्ट के साथ उजागर करता है।


दस्तावेज़ स्थिति का आंदोलन

DocumentPositionMovement एक एनेमरेशन है जिसमें छह सदस्य हैं — None, Inside, StartEnd, Sibling, Above, और Below — जो यह दर्शाते हैं कि दस्तावेज़ में एक स्थिति दूसरी से कैसे संबंधित है जब ट्री नेविगेट किया जाता है: चाहे वह अपरिवर्तित रहे, नोड के अंदर ले जाया गया हो, शुरू/समाप्ति सीमा पर ले जाया गया हो, किसी भाई/बहन पर ले जाया गया हो, या संदर्भ स्थिति के ऊपर या नीचे ले जाया गया हो। यह NodeEnumerator के साथ उसी Nodes.Navigation क्षेत्र में API सतह पर परिभाषित है, जो एनेमरेशन के दौरान स्थिति परिवर्तन को ट्रैक करने में इसकी भूमिका को दर्शाता है।


टिप्स और सर्वोत्तम प्रथाएँ

  • किसी भी CompositeNode पर एक मानक C# foreach का उपयोग करें (या सीधे GetEnumerator() को कॉल करें) ताकि नोड के तत्काल बच्चों को चलाया जा सके — एनुमरेटर आपके लिए IEnumerator<Node> अनुबंध को संभालता है।
  • क्योंकि NodeEnumerator भी IDocumentPositionListener को लागू करता है, ट्री में संरचनात्मक संपादनों के दौरान एनुमरेटर को कैश करने से बचें; यदि आप जिस नोड संग्रह पर इटररेट कर रहे हैं वह बदल गया है तो इसे GetEnumerator() के माध्यम से पुनः प्राप्त करें।
  • गहन ट्री वॉक्स (केवल तत्काल बच्चों के लिए नहीं) के लिए, Node.NextPreOrder(rootNode) / PreviousPreOrder(rootNode) का उपयोग करें, या GetChildNodes(nodeType, isDeep) को isDeep को true पर सेट करके, बजाय कि एनुमरेटर्स को मैन्युअल रूप से नेस्ट किया जाए।

सामान्य समस्याएँ

समस्याकारणसमाधान
नोड के बच्चों को क्रमबद्ध करते हुए उन्हें संशोधित करने से अपवाद फेंकता है या नोड्स को छोड़ देता हैसूचीकरण के दौरान ट्री की संरचना बदल गई थीपहले नोड्स को एक एरे में इकट्ठा करें (उदाहरण के लिए NodeCollection.ToArray() के साथ), फिर एरे को इटररेट करें जबकि ट्री को संशोधित किया जा रहा है
यह स्पष्ट नहीं है कि स्थानांतरित स्थिति मूल स्थिति से कैसे संबंधित हैDocumentPositionMovement मानों की जांच नहीं की गई थीकिसी विशिष्ट संबंध मानने के बजाय रिपोर्ट किए गए DocumentPositionMovement (Inside, StartEnd, Sibling, Above, Below, या None) की जाँच करें

FAQ

क्या मुझे NodeEnumerator को सीधे उपयोग करने की आवश्यकता है?

आमतौर पर नहीं — एक CompositeNode पर मानक C# foreach इसे GetEnumerator() के माध्यम से अप्रत्यक्ष रूप से उपयोग करता है। केवल तब इसे सीधे उपयोग करें जब आपको Dispose()/Reset() पर स्पष्ट नियंत्रण की आवश्यकता हो।

DocumentPositionMovement क्या वर्णन करता है?

दस्तावेज़ ट्री में नेविगेशन के दौरान दो स्थितियों के बीच का संबंध — None, Inside, StartEnd, Sibling, Above, या Below।

यह Nodes पेज पर ट्री-मैनीपुलेशन API से कैसे अलग है?

यह Nodes पेज में नोड्स को डालने, हटाने, क्लोन करने और पुनः व्यवस्थित करने के बारे में बताया गया है। यह पेज मौजूदा ट्री में केवल-रीड ट्रैवर्सल और पोजिशनिंग को कवर करता है।


API Reference सारांश

क्लास / एनमविवरण
NodeEnumeratorIEnumerator<Node> / IDocumentPositionListener for-each इटरेशन के पीछे कार्यान्वयन; Dispose(), Reset()
DocumentPositionMovementट्रैवर्सल के दौरान सापेक्ष स्थिति का वर्णन करने वाला छह-सदस्यीय enum (None, Inside, StartEnd, Sibling, Above, Below)
CompositeNode.GetEnumerator()नोड के तत्काल बच्चों के लिए enumerator लौटाता है

यह भी देखें

 हिन्दी