2012-10-01 14 views
11

मैंने पहले से ही मेरी xml फ़ाइल को XmlReader के साथ पार्स करने के लिए कोड लिखा है, इसलिए मैं इसे फिर से लिखना नहीं चाहता हूं। अब मैंने कार्यक्रम में एन्क्रिप्शन जोड़ा है। मेरे पास एन्क्रिप्ट() और डिक्रिप्ट() फ़ंक्शन हैं जो एक XML दस्तावेज़ और एन्क्रिप्शन एल्गोरिदम लेते हैं। मेरे पास एक ऐसा फ़ंक्शन है जो फ़ाइल को पार्स करने के लिए एक XML पाठक का उपयोग करता है लेकिन अब xml दस्तावेज़ के साथ मुझे यकीन नहीं है कि xmlreader कैसे बनाएं।xmldocument को स्ट्रीम में सहेजने के लिए कैसे करें

प्रश्न यह है कि मेरे एक्सएमएल दस्तावेज़ को स्ट्रीम में कैसे सहेजना है। मुझे यकीन है कि यह आसान है लेकिन मुझे धाराओं के बारे में कुछ भी पता नहीं है।

XmlDocument doc = new XmlDocument(); 
     doc.PreserveWhitespace = true; 
     doc.Load(filep); 
     Decrypt(doc, key); 

     Stream tempStream = null; 
     doc.Save(tempStream); // <--- the problem is here I think 

     using (XmlReader reader = XmlReader.Create(tempStream)) 
     { 
      while (reader.Read()) 
      { parsing code....... } } 

उत्तर

32

आप MemoryStream वर्ग

XmlDocument xmlDoc = new XmlDocument(); 
MemoryStream xmlStream = new MemoryStream(); 
xmlDoc.Save(xmlStream); 

xmlStream.Flush();//Adjust this if you want read your data 
xmlStream.Position = 0; 

//Define here your reading 
+4

करने के लिए [फ्लश() विधि पर डॉक्स] (अनुसार http://msdn.microsoft.com/en-us/library/system.io.memorystream.flush%28v=vs.110%29 .aspx): 'चूंकि मेमोरीस्ट्रीम ऑब्जेक्ट को लिखा गया कोई भी डेटा रैम में लिखा गया है, इसलिए यह विधि अनावश्यक है। इसे अपने उत्तर से हटा देना चाहिए क्योंकि यह अनिवार्य रूप से "नोप" है। – MarioDS

0

एक फाइल करने के लिए लेखन के साथ की कोशिश कर सकते हैं:

static void Main(string[] args) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml("<FTPSessionOptionInfo><HostName>ftp.badboymedia.ca</HostName></FTPSessionOptionInfo>"); 

     using (StreamWriter fs = new StreamWriter("test.xml")) 
     { 
      fs.Write(doc.InnerXml); 
     } 
    } 
0

इस

XmlDocument document= new XmlDocument(); 
    string pathTmp = "d:\somepath"; 
    using(FileStream fs = new FileStream(pathTmp, FileMode.CreateNew)) 
    { 
     document.Save(pathTmp); 
     fs.Flush(); 
    } 
0

मुझे पता है यह एक पुराने सवाल यह है कि कोशिश करते हैं लेकिन इस से एक विधि जोड़ने लायक सोचा nice little blog post। यह कुछ कम प्रदर्शन विधियों को किनारों से बाहर करता है।

private static XDocument DocumentToXDocumentReader(XmlDocument doc) 
{ 
    return XDocument.Load(new XmlNodeReader(doc)); 
} 
संबंधित मुद्दे