2010-08-12 4 views
1

일부 이스케이프 문자 (\ 0)로 문자열을 직렬화하려고합니다. 하지만 deserialise 할 때 예외가 발생합니다.XML 직렬화가 SOAP 및 이진 serialzation을 통해 제안되는 이유는 무엇입니까?

//XML serialization 

    private static void M1() 
     { 
      string str = "\0AC"; 

      StringWriter sw = new StringWriter(); 
      XmlSerializer serializer = new XmlSerializer(typeof(String)); 
      serializer.Serialize(sw, str); 
      System.Console.WriteLine("String encoded to XML = \n{0} \n", sw.ToString()); 
      StringReader sr = new StringReader(sw.ToString()); 
      String s2 = (String)serializer.Deserialize(sr); 

      System.Console.WriteLine("String decoded from XML = \n {0}", s2); 
     } 

//Using Binary serialization 

    void BinaryFormat1() 
    { 
     IFormatter bf = new BinaryFormatter(); 
     string str = "\0MyName"; 
     FileStream fs = new FileStream("SerilizedString.Data", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
     bf.Serialize(fs, str); 
     fs.Close(); 
     fs = new FileStream("SerilizedString.Data", FileMode.Open, FileAccess.Read, FileShare.None); 
     string data = (string)bf.Deserialize(fs); 
     fs.Close(); 
     Console.WriteLine("data : " + data.ToString()); 
    } 
+1

@ starz26 - 어떤 종류의 예외인가? – CoderHawk

+2

질문 설명과 관련하여 주체는 무엇입니까? – Gopi

+0

다른 예외로 인해 다른 직렬화 유형을 사용하려고합니다. 바이너리를 사용하는 것이 좋습니다? – myWorld

답변

3

나는 SOAP에 똑같은 문제가 있다고 기대하고 있습니다. "표준"XML로 모든 유니 코드 문자열을 표현할 수 없다는 문제입니다. 바이너리 직렬화, 잎

:

  • 는 .NET과 함께 작동합니까는
  • 당신이 실행하는 경우 사람이 읽을 수있는 형태로 사람이 읽을 수 (또는 쉽게 변환되지 않습니다 (그래서 상호 운용성에 대한 나쁜) 문제)에

가 개인적으로는 드리프트 또는 프로토콜 버퍼와 같은 사용자 정의 직렬화 옵션을 선호하는 버전의 측면에서 작동하도록 어렵지만, 홍보의 저자로 otocol C#으로 버퍼 포트, 나는 편향되어있다.

+0

내가 이진 직렬화 응용 프로그램을 사용하려고 할 때 예외를 throw하지 않지만 모든 출력을 표시하지 않습니다. – myWorld

+0

@ starz26 : 정확한 코드를 사용하면 출력이 잘됩니다. 콘솔 *에서 실행 해보십시오. Visual Studio와 같은 프로그램에서 실행하면 "\ 0"이 Windows 위젯을 혼동시킬 수 있습니다. Windows 위젯은 종종 "문자열 끝"으로 간주합니다. –

+0

내 응용 프로그램에서 입력을받는 다른 응용 프로그램이 있습니다.이 경우 내 deserilaized 출력은 다른 응용 프로그램에 대한 입력입니다. 내 출력 데이터가 다른 응용 프로그램으로 이동한다는 것을 의미합니다. 예 Im이 작업을보기 위해 Visual Studio를 사용합니다. – myWorld

관련 문제