कस्टम XML मार्कअप के साथ .NET में कैसे काम करें
कैसे काम करें कस्टम XML मार्कअप के साथ .NET में
एक Word दस्तावेज़ कस्टम XML डेटा को अपनी दृश्य सामग्री के साथ ले जा सकता है — डेटा जो कंटेंट कंट्रोल्स को बाइंड करने, एप्लिकेशन-विशिष्ट मेटाडेटा संग्रहीत करने, या किसी अन्य एप्लिकेशन द्वारा जोड़े गए भागों को एम्बेड करने के लिए उपयोग किया जाता है। यह गाइड दिखाता है कि उस डेटा को कैसे पढ़ें, नए कस्टम XML भाग जोड़ें, और पुराने दस्तावेज़ों में अभी भी मौजूद लेगेसी स्मार्ट टैग्स को कैसे निरीक्षण करें, CustomXmlPart, CustomXmlProperty, और SmartTag का उपयोग करके Aspose.Words FOSS में .NET के लिए।
चरण-दर-चरण मार्गदर्शिका
चरण 1: दस्तावेज़ से कस्टम XML डेटा पढ़ें
Document.CustomXmlParts एक CustomXmlPartCollection लौटाता है — वही तंत्र जो Word XML-मैप्ड कंटेंट कंट्रोल्स को समर्थन देने के लिए उपयोग करता है। संग्रह को इटरेट करें, या GetById(id) को कॉल करें जब आपको पहले से पता हो कि आपको कौन सा भाग चाहिए, ताकि एक CustomXmlPart प्राप्त हो सके। प्रत्येक भाग Id को उजागर करता है, एक Data बाइट ऐरे जो कच्चा XML रखता है, एक DataChecksum जो डेटा में परिवर्तन का पता बिना पूर्ण बाइट तुलना के लगाता है, और Schemas — एक CustomXmlSchemaCollection जो उससे जुड़े XML स्कीमा की सूची देता है।
चरण 2: कस्टम XML भाग जोड़ें या अपडेट करें
एक id स्ट्रिंग और XML सामग्री के साथ CustomXmlPartCollection.Add(id, xml) को कॉल करें ताकि एक भाग सीधे बनाया जा सके, या एक CustomXmlPart अलग से बनाकर उसे Add(part) को पास करें। डेटा हटाने के लिए, किसी विशिष्ट स्थिति पर RemoveAt(index) का उपयोग करें या सभी भागों को हटाने के लिए Clear() का प्रयोग करें। जब दस्तावेज़ों के बीच कस्टम XML डेटा कॉपी कर रहे हों, तो स्रोत भाग पर CustomXmlPart.Clone() (या संग्रह का Clone()) उपयोग करें बजाय इसके कि कच्चे XML को पुनः पढ़ें और पुनः जोड़ें, फिर क्लोन को लक्ष्य दस्तावेज़ के Document.CustomXmlParts में जोड़ें।
चरण 3: भाग से जुड़े स्कीमा प्रबंधित करें
CustomXmlPart.Schemas एक CustomXmlSchemaCollection तक पहुंचता है, जो भाग से जुड़े स्कीमा URI को पार्स किए गए स्कीमा ऑब्जेक्ट्स के बजाय साधारण स्ट्रिंग्स के रूप में ट्रैक करता है। स्कीमा URI पंजीकृत करने के लिए Add(value) का उपयोग करें, उसे हटाने के लिए Remove(name) या RemoveAt(index), खोजने के लिए IndexOf(value), और सभी को हटाने के लिए Clear()। Count बताता है कि वर्तमान में भाग से कितने स्कीमा URI जुड़े हुए हैं।
चरण 4: पैकेज-स्तर के कस्टम भागों के साथ काम करें
OOXML पैकेज में हर अदृश भाग कस्टम XML नहीं होता। Document.PackageCustomParts CustomPart ऑब्जेक्ट्स की एक CustomPartCollection लौटाता है — पैकेज में संग्रहित मनमाने भाग, जैसे कि किसी अन्य एप्लिकेशन द्वारा फ़ाइल में किए गए परिवर्तन से जोड़े गए भाग। प्रत्येक CustomPart में एक Name, ContentType, RelationshipType, एक Data बाइट एरे, और एक IsExternal फ़्लैग होता है जो यह दर्शाता है कि यह एम्बेडेड सामग्री के बजाय बाहरी संदर्भ है। Add(part), RemoveAt(index), और Clear() संग्रह को उसी तरह प्रबंधित करते हैं जैसे CustomXmlPartCollection करती है। जब आपका दस्तावेज़ जो भाग ले जाना चाहिए वह कस्टम XML संग्रह में नहीं दिख रहा हो, तो PackageCustomParts — न कि CustomXmlParts — की जाँच करें।
चरण 5: लेगेसी स्मार्ट टैग और उनकी प्रॉपर्टीज़ की जाँच करें
SmartTag एक नोड प्रकार है (NodeType.SmartTag, जो SmartTag(doc) से निर्मित है) जो पहचाने गए टेक्स्ट के चारों ओर लिपटे लेगेसी Word स्मार्ट टैग को दर्शाता है। टैग को बनाने वाले रेकग्नाइज़र की पहचान करने के लिए Element और Uri को साथ में जांचें, फिर Properties पढ़ें — एक CustomXmlPropertyCollection — जो रेकग्नाइज़र द्वारा संलग्न संरचित डेटा को दर्शाता है। एक CustomXmlPropertyCollection के भीतर, इंडेक्सर (जैसे properties["MyProp"]) या Contains(name) किसी विशिष्ट प्रॉपर्टी को खोजते हैं, IndexOfKey(name) उसकी स्थिति लौटाता है, और Remove(name)/RemoveAt(index)/Clear() प्रविष्टियों को हटाते हैं; प्रत्येक CustomXmlProperty CustomXmlProperty(name, uri, value) से निर्मित है और Name, Uri, तथा Value को उजागर करता है। क्योंकि SmartTag CompositeNode से व्युत्पन्न है, यह अन्य नोड्स की तरह दस्तावेज़ ट्री में भी भाग लेता है, Accept(visitor), AcceptStart(visitor), और AcceptEnd(visitor) का समर्थन करता है DocumentVisitor-आधारित ट्रैवर्सल के लिए।
सामान्य समस्याएँ और समाधान
CustomXmlPartCollection.GetById(id) कोई उपयोगी परिणाम नहीं देता। आईडी वर्तमान में मौजूद किसी भी भाग से मेल नहीं खाती है Document.CustomXmlParts. संग्रह को क्रमांकित करके यह पुष्टि करें कि आईडी मौजूद है, या पहले भाग जोड़ें इस तरह Add(id, xml).
दूसरे अनुप्रयोग द्वारा जोड़ा गया भाग इटरेट करके नहीं पाया जाता है CustomXmlParts. Non-XML पैकेज भागों को इस माध्यम से उजागर किया जाता है Document.PackageCustomParts, नहीं CustomXmlParts. जांचें PackageCustomParts (a CustomPartCollection) इसके बजाय.
SmartTag.Properties खाली है जबकि टैग स्पष्ट रूप से मौजूद है. हर स्मार्ट टैग रिकग्नाइज़र संरचित गुण संलग्न नहीं करता। जाँचें SmartTag.Element and Uri यह पुष्टि करने के लिए कि टैग किस रिकग्नाइज़र ने बनाया था, इससे पहले कि आप मानें कि विशिष्ट गुण उपस्थित होंगे।
कस्टम XML डेटा ऐसा प्रतीत नहीं होता कि वह उस कंटेंट कंट्रोल से संबंधित है जिससे इसे बंधा होना चाहिए। कंटेंट कंट्रोल्स अपने स्वयं के डेटा-बाइंडिंग कॉन्फ़िगरेशन के माध्यम से कस्टम XML से बंधते हैं, स्वचालित रूप से हर एक से नहीं। CustomXmlPart in Document.CustomXmlParts. पुष्टि करें कि किसी दिए गए कंटेंट कंट्रोल का वास्तविक बंधन कौन सा भाग है, यह मानने के बजाय कि यह एक-से-एक संबंध है।
अक्सर पूछे जाने वाले प्रश्न
मैं दस्तावेज़ में कस्टम XML डेटा कैसे जोड़ूँ?
एक id स्ट्रिंग और XML सामग्री के साथ Document.CustomXmlParts.Add(id, xml) को कॉल करें, या अलग से एक CustomXmlPart बनाएं और उसे Add(part) को पास करें।
CustomXmlPart और CustomXmlProperty में क्या अंतर है?
CustomXmlPart एक पूरा XML डेटा द्वीप है — बाइट-ऐरे पेलोड और संबंधित स्कीमा — जिसे Document.CustomXmlParts के माध्यम से पहुँचा जाता है। CustomXmlProperty एक एकल नाम/मान जोड़ी है, आमतौर पर SmartTag.Properties के माध्यम से पहुँचा जाता है न कि सीधे दस्तावेज़ से।
मैं कस्टम XML डेटा को एक दस्तावेज़ से दूसरे दस्तावेज़ में कैसे कॉपी करूँ?
स्रोत CustomXmlPart पर Clone() को कॉल करें, फिर क्लोन को लक्ष्य दस्तावेज़ के Document.CustomXmlParts में Add(part) के साथ जोड़ें।
एक SmartTag क्या है, और मैं इसे कब देखूँगा?
SmartTag एक पुरानी Word सुविधा है जो स्मार्ट-टैग पहचानकर्ता द्वारा पहचाने और लिपटे हुए पाठ को दर्शाती है — एक दस्तावेज़ नोड (NodeType.SmartTag) जिसमें एक Element और Uri है जो पहचानकर्ता को दर्शाते हैं, साथ ही Properties संग्रह CustomXmlProperty मानों का। यह उन दस्तावेज़ों में दिखाई देता है जो पुराने Word संस्करणों में स्मार्ट टैग्स सक्रिय करके बनाए या संपादित किए गए थे।
मैं कैसे जानूँ कि किसी दस्तावेज़ में कितने कस्टम XML भाग या पैकेज भाग हैं?
क्रमशः Document.CustomXmlParts (एक CustomXmlPartCollection) पर Count पढ़ें या Document.PackageCustomParts (एक CustomPartCollection) पढ़ें।