XML 문자열을 스트림에서 쓰고 읽은 후 직렬화 할 수 없게됩니다. 새 문자열이 잘립니다.Xml 직렬화/직렬화 해제 문제
string XmlContent = getContentFromMyDataBase();
XmlSerializer xs = new XmlSerializer(typeof(MyObj));
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
char[] ca = XmlContent.ToCharArray(); // still working up to this point.
ms.Position = 0;
sw.Write(ca);
StreamReader sr = new StreamReader(ms);
ms.Position = 0;
string XmlContentAgain = sr.ReadToEnd();
Console.WriteLine(XmlContentAgain); // (outputstring is too short.)
MyObj theObj = (MyObj)xs.Deserialize(ms); // Can't deserialize.
문제를 해결하는 방법이나 문제의 원인에 대한 제안 사항이 있으십니까? 내 유일한 추측은 어떤 형태의 인코딩 문제가 있지만 그것을 찾는 방법/고정하는 방법을 모르겠다.
또한 myObj에는 일반적으로 직렬화 할 수없는 일반 사전 구성원이 있으므로 직렬화하기 위해 Paul Welter의 코드를 도난당했습니다.
왜 XML을 데이터베이스에 저장하지 않습니까? – Mark
SQL 데이터베이스는 관계형이기 때문에. XML은 계층 적입니다. 호환되지 않습니다. 데이터베이스는 데이터를 저장하기위한 것이지, 데이터의 표현 (XML)을 저장하기위한 것이 아닙니다. –
XML은 텍스트입니다. 데이터베이스는 텍스트를 저장하는 데 아주 능숙합니다. XML을 데이터베이스에 저장하는 것이 전적으로 적합합니다. "데이터"와 "데이터 표현"사이의 구별은 임의적이고 의미가 없습니다. – Mark