Загрузка выходных данных XmlSerializer в XmlDictionaryReader

#c# #xml #serialization #xml-serialization #filestream

#c# #xml #сериализация #xml-сериализация #filestream

Вопрос:

Я столкнулся с этой проблемой

 class person
{
;
}

person p = new person();
XmlSerializer ser = new XmlSerializer(p.GetType());
FileStream fs = File.Open("sam.xml",FileMode.OpenOrCreate, FileAccess.Write);

ser.Serialize(fs,p)

fs.flush();
fs.close();

FileStream stream = FileStream("sam.xml", FileMode.Open);
XmlDictionaryReader xdr = XmlDictionaryReader.CreateTextReader(stream,new XmlDictionaryReaderQuotas());
 

теперь моя проблема в том, как я могу создать объект xdr без создания XML-файлов.

Комментарии:

1. Что вы планируете делать с XmlDictionaryReader ?

Ответ №1:

Вы можете сделать это с таким потоком памяти:

 class person 
{ 
; 
} 

person p = new person(); 
using (MemoryStream ms = new MemoryStream())     
{
    XmlSerializer ser = new XmlSerializer(p.GetType()); 
    ser.Serialize(ms,p) 

    ms.Seek(0, SeekOrigin.Begin); 

    XmlDictionaryReader xdr = XmlDictionaryReader.CreateTextReader(ms,new XmlDictionaryReaderQuotas());
}
 

Это должно сработать.

Ответ №2:

Сериализуйте в memorystream вместо filestream.

Комментарии:

1. Я получаю System.Xml.XmlException: неожиданный конец файла. ошибка в XmlDictionaryReader. CreateTextReader(ms, new XmlDictionaryReaderQuotas) .

2. Вам нужно будет искать поток обратно к началу.