2012-01-20 83 views
0

我在HTTP響應中接收XML。我想用XmlReader解析它,因爲它相當大並且有許多子節點。但同時我希望能夠將整個XML保存到一個文件中。使用XmlReader讀取XML時保存XML文件

如何在不首先將整個XML讀取到內存緩衝區的情況下執行此操作?

另外,我並不總是將XML解析爲最後一個元素,但我需要保存整個XML。

謝謝

+0

如果您想要在本地保存整個文件,則沒有其他方式將其全部下載到您的代碼運行的機器上。如果你加載到中間只是爲了節省帶寬,你如何想象將它全部保存在磁盤上?!?! –

+0

@DavidePiras XmlReader使用Stream讀取XML。我認爲可能在用XmlReader讀取響應的同時編寫響應的內容。在平行下。如果我停下來在中間用XmlReader讀取文件,那麼我希望能夠保存其餘部分。我想使用XmlReader不是爲了節省帶寬,而是爲了解析速度和內存(因爲XmlReader不需要將整個XML加載到內存中) – CITBL

+0

您如何準確接收數據? –

回答

0

,如果我沒看錯,你可以使用XmlWriter.WriteNode方法,

XmlTextWriter empwriter = new XmlTextWriter(); 

    //Write the start tag. 
    empwriter .WriteStartElement("Employee"); 

    //Write the first employee. 
    empwriter .WriteNode(reader, false); 

     //all your elements.. 

    //Write the last employee. 
    empwriter.WriteNode(reader, false); 
    empwriter.WriteEndElement(); 

XML Writer

1

爲什麼不輸入流直推到一個文件,然後解析之後使用XmlReader的文件中的XML?

+1

我認爲這是不好的表現。你先寫,然後再讀一遍。我們的系統會做出非常人的要求 – CITBL

0

您可以根據需要創建一個Streamwriter並逐個節點地進行寫入。

using (StreamWriter writer = new StreamWriter("file.txt")) 
{ 
     //Start loop to read XML here 

    writer.Write("XML node you want to write");  
     // Loop ends 
}