2013-02-12 14 views
13

निम्न सरल कोड पर विचार करें जो एक XML दस्तावेज़ बनाता है और इसे प्रदर्शित करता है।हेडर के साथ XML कैसे प्राप्त करें (<? Xml संस्करण = "1.0" ...)?

XmlDocument xml = new XmlDocument(); 
XmlElement root = xml.CreateElement("root"); 
xml.AppendChild(root); 
XmlComment comment = xml.CreateComment("Comment"); 
root.AppendChild(comment); 
textBox1.Text = xml.OuterXml; 

यह प्रदर्शित करता है, के रूप में उम्मीद:

<root><!--Comment--></root> 

यह नहीं है, तथापि,

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

तो प्रदर्शित करता है कि कैसे मुझे लगता है कि रूप में अच्छी तरह मिल सकता है?

उत्तर

20

एक XML- घोषणा XmlDocument.CreateXmlDeclaration Method का उपयोग कर बनाएँ:

XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null); 
xml.AppendChild(docNode); 

नोट: कृपया encoding पैरामीटर के लिए विधि के लिए दस्तावेज़ पर एक नज़र, विशेष रूप से ले: इस पैरामीटर के मूल्यों के लिए विशेष आवश्यकताओं नहीं है।

+0

धन्यवाद। मैंने सोचा कि स्वचालित था। – ispiro

+0

+1। कृपया ध्यान दें कि "यूटीएफ -8" की अपेक्षा स्ट्रिंग के एन्कोडिंग के साथ मेल नहीं खाती है (+1 निकोलस केरी उत्तर देखें)। –

+0

@AlexeiLevenkov धन्यवाद। लेकिन मैं इसे 'OuterXml' कर रहा हूं और इसका उपयोग कर रहा हूं। या क्या मुझे कुछ याद आ रही है और फिर भी एक समस्या है? – ispiro

10

आपको एक एक्सएमएलवाइटर (जो डिफ़ॉल्ट रूप से एक्सएमएल घोषणा लिखता है) का उपयोग करने की आवश्यकता है। आपको ध्यान रखना चाहिए कि सी # तार यूटीएफ -16 हैं और आपकी एक्सएमएल घोषणा का कहना है कि दस्तावेज़ यूटीएफ -8 एन्कोडेड है। वह विसंगति समस्या पैदा कर सकती है। यहाँ एक उदाहरण है, एक फ़ाइल है कि परिणाम आप उम्मीद कर देता है के लिए लिख:

XmlDocument xml = new XmlDocument(); 
XmlElement root = xml.CreateElement("root"); 
xml.AppendChild(root); 
XmlComment comment = xml.CreateComment("Comment"); 
root.AppendChild(comment); 

XmlWriterSettings settings = new XmlWriterSettings 
{ 
    Encoding   = Encoding.UTF8, 
    ConformanceLevel = ConformanceLevel.Document, 
    OmitXmlDeclaration = false, 
    CloseOutput  = true, 
    Indent    = true, 
    IndentChars  = " ", 
    NewLineHandling = NewLineHandling.Replace 
}; 

using (StreamWriter sw = File.CreateText("output.xml")) 
using (XmlWriter writer = XmlWriter.Create(sw,settings)) 
{ 
    xml.WriteContentTo(writer); 
    writer.Close() ; 
} 

string document = File.ReadAllText("output.xml") ; 
4
XmlDeclaration xmldecl; 
xmldecl = xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", null); 

XmlElement root = xmlDocument.DocumentElement; 
xmlDocument.InsertBefore(xmldecl, root); 
+1

धन्यवाद। 'सम्मिलित करें' उपयोगी दिखता है। – ispiro

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

  • कोई संबंधित समस्या नहीं^_^