StringWriter를 사용한 XML 직렬화: 대체 접근 방식
객체를 XML 문자열로 직렬화할 때 개발자는 종종 다음을 사용하는 기본 메커니즘에 의존합니다. MemoryStream 및 XmlTextWriter. 그러나 보다 효율적인 접근 방식을 위해 StringWriter를 사용하는 대체 방법이 있습니다.
StringWriter 사용
StringWriter 클래스는 텍스트 내용을 문자열에 쓰는 편리한 방법을 제공합니다. 다음 코드에서 MemoryStream을 StringWriter로 바꾸면 직렬화된 XML을 문자열로 간단하게 작성할 수 있습니다.
XmlSerializer ser = new XmlSerializer(typeof(MyObject)); StringWriter writer = new StringWriter(); ser.Serialize(writer, myObject); string serializedValue = writer.ToString();
StringWriter의 장점
인코딩 고려 사항
기본적으로 StringWriter는 기본 시스템 인코딩을 사용하며 이는 예상 인코딩인 UTF-16과 다를 수 있습니다. XML 문서의 경우. UTF-16 호환성을 보장하려면 StringWriterWithEncoding 또는 Utf8StringWriter와 같은 사용자 정의 클래스를 사용하여 원하는 인코딩을 명시적으로 설정할 수 있습니다.
public sealed class StringWriterWithEncoding : StringWriter { public override Encoding Encoding { get; } public StringWriterWithEncoding(Encoding encoding) { Encoding = encoding; } } public sealed class Utf8StringWriter : StringWriter { public override Encoding Encoding => Encoding.UTF8; }
데이터베이스 저장소
발생한 문제 SQL Server에 XML을 저장할 때 인코딩과 관련이 있을 수 있습니다. XML 문자열이 이미 UTF-16으로 인코딩된 경우 XML 선언에서 인코딩을 수동으로 설정할 필요가 없습니다. 그러나 문자열이 UTF-16으로 인코딩되지 않은 경우 적절한 저장을 위해 인코딩을 UTF-16으로 수동으로 설정해야 할 수도 있습니다.
위 내용은 StringWriter는 C#의 XML 직렬화를 위한 MemoryStream의 더 나은 대안입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!