2009-12-30 11 views
12

मैं XmlWriter का उपयोग कर प्रारूप की तरह एक एक्सएमएल बना रहा हूं। लेकिन आउटपुट में संस्करण की जानकारी भी है।xml फ़ाइल से संस्करण को हटाने

<?xml version="1.0" encoding="utf-8"?> 

मुझे अपनी फ़ाइल में इसकी आवश्यकता नहीं है। मैं उसे कैसे कर सकता हूँ? कोड द्वारा इसे हटाने का कोई तरीका है?

+9

स्टॉप! कृप्या! "एक्सएमएल जैसी प्रारूप" न बनाएं। असली एक्सएमएल का प्रयोग करें। यदि यह एक्सएमएल जैसा है तो एक और डेवलपर साथ आएगा, इसे देखें, मान लीजिए कि यह एक्सएमएल है, और उसके बाद समस्याएं होती हैं जब वे एक्सएमएल के रूप में इसे पार्स करने का प्रयास करते हैं। (और एक बार जब आप वास्तविक एक्सएमएल का उपयोग करते हैं, तो प्रसंस्करण निर्देश का उपयोग कोई मुद्दा नहीं होगा, क्योंकि वहां दिए गए मान डिफ़ॉल्ट हैं जो उस प्रसंस्करण निर्देश में अनुपलब्ध हैं)। – Quentin

+2

यह एक्सएमएल घोषणा विनिर्देश द्वारा आवश्यक है। आप इसे क्यों हटाना चाहते हैं? (एक्सएमएल 1.0 में घोषणा वैकल्पिक है लेकिन एक्सएमएल 1.1 में आवश्यक है) –

+0

इसके अलावा, जो जानकारी आप खोज रहे हैं वह प्रश्न में निहित है _ ऑब्जेक्ट को क्रमबद्ध करते समय XML प्रोसेसिंग निर्देश को छोड़ना (http://stackoverflow.com/questions/164585/ omitting-xml-processing-instruct-when-serializing-an-object) –

उत्तर

19

उपयोग ConformanceLevel और OmitXmlDeclaration गुणों का उपयोग कर सकते हैं। उदाहरण:

XmlWriter w; 
w.Settings = new XmlWriterSettings(); 
w.Settings.ConformanceLevel = ConformanceLevel.Fragment; 
w.Settings.OmitXmlDeclaration = true; 
+0

ConformanceLevel का उपयोग क्यों करना चाहिए यह w.Settings.ConformanceLevel = अनुरूपताLevel.Fragment सेट किए बिना काम कर रहा है; भी। अनुरूपता क्या है? – viky

+1

'फ्रैगमेंट' अनुरूपता स्तर का अर्थ है कि आप एक संपूर्ण दस्तावेज़ नहीं लिख रहे हैं, आप एक टुकड़ा लिख ​​रहे हैं। प्रलेखन का कहना है कि 'OmitXmlDeclaration' को 'सत्य' पर सेट करना कोई प्रभाव नहीं होगा यदि' ConformanceLevel' को 'दस्तावेज़' पर सेट किया गया है। –

+0

बस ध्यान दें कि आपको लाइन 'w.Settings.ConformanceLevel = ConformanceLevel.Fragment' की आवश्यकता नहीं है; यदि आप 'writer.WriteStartDocument();' का उपयोग भी करते हैं तो यह एक त्रुटि फेंक देगा। यह तर्क दिया जा सकता है कि आपको इसका उपयोग इस तरह से नहीं करना चाहिए, लेकिन जब तक आप इसे 'सेटिंग्स' के रूप में छोड़ देते हैं, तब तक यह काम करता है। अनुरूपता लेवल = अनुरूपताLevel.Auto; '। – Ravendarksky

11

जब आपके XmlWriter बनाने, सेटिंग्स आप XmlWriterSettings का उपयोग कर चाहते हैं के माध्यम से पारित:

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.OmitXmlDeclaration = true; 

writer = XmlWriter.Create(Console.Out, settings); 

XmlWriterSettings अन्य गुणों के साथ-(मांगपत्र और अधिक) है।

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