想,我有一个简单类型:语言识别为XML标记,而使用内置的XML序列化机制
public class Report
{
public Report()
{
BirthDate = new Element();
BirthPlace = new Element();
}
public Element BirthDate { get; set; }
public Element BirthPlace { get; set; }
}
public class Element
{
[XmlAttribute("published")]
public bool Published { get; set; }
[XmlText]
public string Value { get; set; }
}
我进行序列化的目的定义的简单扩展方法:
public static class TheHelper
{
public static string Serialize<T>(this T source, Encoding encoding)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, encoding);
xs.Serialize(xmlTextWriter, source);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
return encoding.GetString(memoryStream.ToArray());
}
}
当样本报告对象被创建,它被下一个序列化为xml格式:
Report r = new Report();
r.BirthDate.Published = true;
r.BirthDate.Value = DateTime.Now.AddYears(-1000).ToString("yyyy-MM-dd");
r.BirthPlace.Published = false;
r.BirthPlace.Value = "K-PAX";
string xml = r.Serialize(Encoding.UTF8);
输出文件如下所示i Š创建:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BirthDate published="true">1011-04-07</BirthDate>
<BirthPlace published="false">K-PAX</BirthPlace>
</Report>
但我想使用名为XML特殊属性添加language identification:郎:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BirthDate published="true" xml:lang="en-GB">1011-04-07</BirthDate>
<BirthDate published="true" xml:lang="kp-AX">07.04.1011</BirthDate>
<BirthPlace published="false" xml:lang="en-GB">K-PAX</BirthPlace>
<BirthPlace published="false" xml:lang="kp-AX">k_p4x</BirthPlace>
</Report>
什么都可以智能的方式来实现这一目标?我有为en-GB和kp-AX ..语言定义的资源。如何修改和创建Report对象以使具有不同xml-lang属性的多个标记可以使用XmlSerializer进行序列化?
问候。
您不应该使用'new XmlTextWriter()'。从.NET 2.0开始已经被弃用了。您应该改用'XmlWriter.Create()'。 – 2011-04-07 19:11:49
感谢您的线索。 – jwaliszko 2011-04-09 10:42:00