[XmlRoot("Class1")]
class Class1
{
[(XmlElement("Product")]
public string Product{get;set;}
[(XmlElement("Price")]
public string Price{get;set;}
}
这是我的课。在此价格中包含“£”符号。将其序列化为 XML 后,我得到“?” 而不是“£”。
我需要做什么才能获得 XML 中的“£”?或如何将价格数据作为 CDATA 传递?
[XmlRoot("Class1")]
class Class1
{
[(XmlElement("Product")]
public string Product{get;set;}
[(XmlElement("Price")]
public string Price{get;set;}
}
这是我的课。在此价格中包含“£”符号。将其序列化为 XML 后,我得到“?” 而不是“£”。
我需要做什么才能获得 XML 中的“£”?或如何将价格数据作为 CDATA 传递?
您的问题必须与 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;
}
}
}