我有一個MemoryStream
包含XML我寫一個文件,如下所示:使用的StreamReader讀取的XElement葉開放元素
var xml = XElement.Load(data.Content); // data.Content is of type `Stream`
var contentElement = new XElement("Content", xml);
var information = new XElement("TestInformation",
new XAttribute("Name", data.Descriptor.Name),
new XAttribute("Description", data.Descriptor.Description),
new XAttribute("Owner", data.Descriptor.Owner),
contentElement);
(data
是一個內部類型 - DataObject
- 包含Stream
(稱爲內容)和帶有元數據的描述符)。
後來我嘗試從這個文件,內容如下:
var returnValue = new DataObject();
var xElement = XElement.Load(fullPath);//the file path
returnValue.Descriptor = new Descriptor
{
Name = xElement.Attribute("Name").Value,
Description = xElement.Attribute("Description").Value,
Owner = xElement.Attribute("Owner").Value
};
returnValue.Content = GetContent(xElement.Element("Content"));
的getContent方法:
private Stream GetContent(XElement element)
{
var testElement = element.Elements().First();
var contentStream = new MemoryStream();
var streamWriter = new StreamWriter(contentStream);
streamWriter.Write(testElement);
contentStream.Position = 0;
return contentStream;
}
當我嘗試讀取流作爲內部類型,我需要,我得到一個SerializationException
表示某些元素沒有關閉,而他們確實不是 - 如果我使用StreamReader
來讀取此流,它不包含我在XElement
中看到的所有數據。我在這裏做錯了什麼?
你試過'streamWriter.Flush()'? –
你嘗試過'testElement.Save(contentStream);'? 'StreamWriter.Write(object)'實際上不是用來寫XML的,儘管使用this省略了'XElement.ToString()'返回的XML的某些部分有點奇怪。 – dtb
感謝您的鏈接。我添加了'C#'標籤,因爲我之前編寫的一些問題已經被編輯爲標籤添加標籤。 – Noich