c# - .NET XmlWriter में उचित नाम स्थान प्रबंधन




(3)

मैं अपने कार्य पर काफी बड़े पैमाने पर .NET XML तकनीक का उपयोग करता हूं। जिन चीज़ों में मैं बहुत ज्यादा पसंद करता हूं, उनमें से एक XSLT इंजन है, और इसके सटीक रूप से इसकी अनुकूलता। हालांकि वहाँ एक छोटा सा टुकड़ा है जो झुंझलाहट का एक स्रोत रहा है। कुछ प्रमुख या कुछ नहीं जो हम साथ नहीं रह सकते हैं लेकिन यह हमें सुंदर एक्सएमएल बनाने से रोका जा रहा है जो हम उत्पादन करना चाहते हैं।

हम जो चीजें करते हैं, उनमें से एक नोड्स को एक एक्सएमएल दस्तावेज़ से दूसरी में नोड्स इनलाइन और आयात करना है।

दुर्भाग्य से, जब आप एक XmlTextWriter (वास्तव में जो XmlWriter.Create(Stream) भी XmlWriter.Create(Stream) देता है) को नोड्स सहेजते हैं, तो नेमस्पेस परिभाषाएं सभी को वहां फेंक दी जाती हैं, भले ही यह आवश्यक हो (पहले से परिभाषित) या नहीं। आप निम्न प्रकार का XML प्राप्त करते हैं:

<root xmlns:abx="http://bladibla">  
     <abx:child id="A">  
         <grandchild id="B">
             <abx:grandgrandchild xmlns:abx="http://bladibla" />  
         </grandchild>  
     </abx:child>  
</root>

क्या किसी के पास सुझाव है कि कैसे एनएटी को अपनी नेमस्पेस परिभाषाओं के बारे में कुशल बनाना है?

धन्यवाद, बोअज़

पुनश्च। एक अतिरिक्त बोनस के रूप में मैं डिफ़ॉल्ट नेमस्पेस को ओवरराइड करना चाहूंगा, क्योंकि मैं इसे नोड लिखता हूं।


यह पोस्ट सहायक हो सकता है इसके अलावा XmlTextWriter \ XmlTextReader वर्गों के नामस्थानों की संपत्ति पर एक नज़र डालें।


मुझे यकीन नहीं है कि आप यही चाहते हैं, लेकिन जब आप एक्सएमएल स्ट्रीम में लिखना शुरू करते हैं, तो आप इस प्रकार के कोड का उपयोग कर सकते हैं:

myWriter.WriteAttributeString("xmlns", "abx", null, "http://bladibla");

XmlWriter इसे याद रखना चाहिए और इसे फिर से लिखना नहीं है यह 100% बुलेटप्रूफ नहीं हो सकता, लेकिन यह अधिकांश समय काम करता है।


क्या आपने यह कोशिश की?

Dim settings = New XmlWriterSettings With {.Indent = True,
                                          .NamespaceHandling = NamespaceHandling.OmitDuplicates,
                                          .OmitXmlDeclaration = True}
Dim s As New MemoryStream
Using writer = XmlWriter.Create(s, settings)
    ...
End Using

दिलचस्प है 'नेमस्पेसहैंडलिंग.ऑमिट ड्यूप्लिकेट्स'





xmlwriter