2013-05-15 4 views
0
[XmlRoot("Class1")] 
class Class1 
{ 
[(XmlElement("Product")] 
public string Product{get;set;} 
[(XmlElement("Price")] 
public string Price{get;set;} 
} 

이것은 내 수업입니다. 이 가격에는 '£'기호가 포함되어 있습니다. XML로 직렬화 한 후에 '?' '£'대신.XML의 클래스 직렬화

XML에서 '£'을 얻으려면 어떻게해야합니까? 또는 어떻게 데이터를 가격으로 CDATA로 전달할 수 있습니까?

+0

우리에게 직렬화 코드를 보여줍니다. –

+0

실제로 다른 팀에서 개발 한 라이브러리가 있습니다. 우리는 그 라이브러리만을 사용하고 우리는 직렬화 된 XML을 얻는다. 나는 '£'표시를 제외하고는 모든 것을 잘하고있다. – Bhushan

+0

인코딩과 관련이있는 사운드 - UTF8로 쓰여지는 출력입니까? –

답변

0

문제는 XML을 파일에 쓰는 방법과 관련이 있어야합니다.

필자가 지금까지 저에게 제공 한 정보를 사용하는 프로그램을 작성했으며 XML 문자열을 인쇄 할 때 올바른 것입니다.

데이터가 XML 파일에 쓰여지거나 XML 파일에서 다시 읽혀질 때 오류가 발생한다고 결론을 내립니다.

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Xml; 
using System.Xml.Serialization; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main() 
     { 
      new Program().Run(); 
     } 

     void Run() 
     { 
      Class1 test = new Class1(); 
      test.Product = "Product"; 
      test.Price = "£100"; 

      Test(test); 
     } 

     void Test<T>(T obj) 
     { 
      XmlSerializerNamespaces Xsn = new XmlSerializerNamespaces(); 
      Xsn.Add("", ""); 
      XmlSerializer submit = new XmlSerializer(typeof(T)); 
      StringWriter stringWriter = new StringWriter(); 
      XmlWriter writer = XmlWriter.Create(stringWriter); 
      submit.Serialize(writer, obj, Xsn); 
      var xml = stringWriter.ToString(); // Your xml This is the serialization code. In this Obj is the object to serialize 

      Console.WriteLine(xml); // £ sign is fine in this output. 
     } 
    } 

    [XmlRoot("Class1")] 
    public class Class1 
    { 
     [XmlElement("Product")] 
     public string Product 
     { 
      get; 
      set; 
     } 

     [XmlElement("Price")] 
     public string Price 
     { 
      get; 
      set; 
     } 
    } 

} 
+0

나는 당신이 당신의 응답으로 올바른 방향에 있다고 믿는다. XML이 UTF-8로 직렬화 될 수 있지만 저장되는 파일은 UTF-8로 인코딩되어 있습니까? 또한 BOM이 없으면 Windows는 인코딩을 "추측"하려고 시도하고 때로는 잘못 가져옵니다. 이것은 Windows가 ANSI 또는 CP-1252라고 생각하는 파일에서 UTF-8 문자를 사용할 때 매우 분명합니다. 잘못된 문자는 해당 문자가 없기 때문에'? '로 표시됩니다. 모두에게 도움이되는 몇 가지 생각. – fourpastmidnight