2012-08-04 61 views
0
 StringBuilder returnXml = new StringBuilder(); 
     returnXml.Append("DATE TIME,FUNCTION,TOTAL\n"); 
     String Date = "", Function = "", Total = ""; 
     StreamReader xmlStream = getBlobData(logType, serial, blobStorageCredentials); 

     //string adf = xmlStream.ReadToEnd(); 

     XmlReader xmlReader = XmlReader.Create(xmlStream); 
     while (xmlReader.Read()) 
     { 

       switch (xmlReader.Name) 
       { 
        case "OperationType": 
         if (xmlReader.NodeType == XmlNodeType.Element) 
         Function = xmlReader.ReadElementContentAsString(); 
         break; 

        case "TotalCounter": 
         if (xmlReader.NodeType == XmlNodeType.Element) 
         Total = xmlReader.ReadElementContentAsString(); 
         break; 

        case "LogDateTime": 
         if (xmlReader.NodeType == XmlNodeType.Element) 
         Date = xmlReader.ReadElementContentAsString(); 
         break; 

        case "Entries": 
         if (xmlReader.NodeType == XmlNodeType.EndElement) 
         { 
          returnXml.Append(Date); 
          returnXml.Append(","); 
          returnXml.Append(Function); 
          returnXml.Append(","); 
          returnXml.Append(Total); 
          returnXml.Append("\n"); 
         } 
         break; 

        default: 
         break; 
       } 

     } 
     return returnXml.ToString(); 

因此,所有這些情況都不會被輸入。如果我評論:XmlReader認爲所有元素都是EndElements

//string xmlString = xmlStream.ReadToEnd(); 

隨後的xmlString這是在調試器(它看起來是正確的):

http://pastebin.com/8Uj2GwSB

爲什麼XmlReader中認爲所有的節點都EndElements?我很掙扎,因爲這不是我的代碼。交給我......

+0

看不到你的xml。鏈接超時。你可以發佈你的XML嗎? – ZafarYousafi 2012-08-04 02:22:48

回答

0

當您取消註釋時,您的StreamReader會將文件指針移動到xml文件的末尾。

//string xmlString = xmlStream.ReadToEnd(); 

因此,即使您從xmlStream創建XmlReader,也沒有任何剩餘字節需要讀取。 如果您想要將流讀入字符串並重新用於XmlReader,則需要「倒回」流。

xmlStream.Position = 0; 
xmlStream.DiscardBufferedData(); 

希望這有助於: 這可以通過設置Position屬性和清除緩存等來實現。

+0

我知道這是我第一次嘗試修復。我用調試器檢查了位置,看起來正確。你能看到XML嗎?我認爲這可能是問題的一部分。 – Dave 2012-08-06 17:15:40

相關問題