使用XSD(.Net C#4.0)中自动生成的代理类
我使用xsd.exe生成了一个名为“FacturaE”的代理类 我可以实例化这个类,填充它的信息,并使用XmlSerializer保存为XML 但是,给定一个格式良好的XML文件,如何将其读入“FacturaE”使用XSD(.Net C#4.0)中自动生成的代理类,c#,xml,.net-4.0,xsd.exe,C#,Xml,.net 4.0,Xsd.exe,我使用xsd.exe生成了一个名为“FacturaE”的代理类 我可以实例化这个类,填充它的信息,并使用XmlSerializer保存为XML 但是,给定一个格式良好的XML文件,如何将其读入“FacturaE” 感谢作为xsd.exe的替代品,它是一个功能更加全面的类生成器。它可以向生成的类中添加方法,从Xml进行序列化和反序列化 以下是Xsd2Code生成的序列化/反序列化方法的示例: /// <summary> /// Serializes current En
感谢作为xsd.exe的替代品,它是一个功能更加全面的类生成器。它可以向生成的类中添加方法,从Xml进行序列化和反序列化 以下是Xsd2Code生成的序列化/反序列化方法的示例:
/// <summary>
/// Serializes current EntityBase object into an XML document
/// </summary>
// <returns>string XML value</returns>
public virtual string Serialize() {
System.IO.StreamReader streamReader = null;
System.IO.MemoryStream memoryStream = null;
try {
memoryStream = new System.IO.MemoryStream();
Serializer.Serialize(memoryStream, this);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
streamReader = new System.IO.StreamReader(memoryStream);
return streamReader.ReadToEnd();
}
finally {
if (streamReader != null) {
streamReader.Dispose();
}
if (memoryStream != null) {
memoryStream.Dispose();
}
}
}
/// <summary>
/// Deserializes workflow markup into an EntityBase object
/// </summary>
// <param name="xml">string workflow markup to deserialize</param>
// <param name="obj">Output EntityBase object</param>
// <param name="exception">output Exception value if deserialize failed</param>
// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
public static bool Deserialize(string xml, out T obj, out System.Exception exception) {
exception = null;
obj = default(T);
try {
obj = Deserialize(xml);
return true;
}
catch (System.Exception ex) {
exception = ex;
return false;
}
}
public static bool Deserialize(string xml, out T obj) {
System.Exception exception = null;
return Deserialize(xml, out obj, out exception);
}
public static T Deserialize(string xml) {
System.IO.StringReader stringReader = null;
try {
stringReader = new System.IO.StringReader(xml);
return ((T)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
}
finally {
if (stringReader != null) {
stringReader.Dispose();
}
}
}
//
///将当前EntityBase对象序列化为XML文档
///
//字符串XML值
公共虚拟字符串序列化(){
System.IO.StreamReader StreamReader=null;
System.IO.MemoryStream MemoryStream=null;
试一试{
memoryStream=新系统.IO.memoryStream();
Serializer.Serialize(memoryStream,this);
memoryStream.Seek(0,System.IO.SeekOrigin.Begin);
streamReader=新的System.IO.streamReader(memoryStream);
返回streamReader.ReadToEnd();
}
最后{
if(streamReader!=null){
streamReader.Dispose();
}
if(memoryStream!=null){
memoryStream.Dispose();
}
}
}
///
///将工作流标记反序列化为EntityBase对象
///
//要反序列化的字符串工作流标记
//输出EntityBase对象
//如果反序列化失败,则输出异常值
//如果此XmlSerializer可以反序列化对象,则为true;否则,错误
公共静态bool反序列化(字符串xml、out T obj、out System.Exception){
异常=空;
obj=默认值(T);
试一试{
obj=反序列化(xml);
返回true;
}
catch(System.Exception-ex){
例外=例外;
返回false;
}
}
公共静态bool反序列化(字符串xml,out T obj){
System.Exception=null;
返回反序列化(xml、out obj、out异常);
}
公共静态T反序列化(字符串xml){
System.IO.StringReader StringReader=null;
试一试{
stringReader=new System.IO.stringReader(xml);
return((T)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader)));
}
最后{
if(stringReader!=null){
stringReader.Dispose();
}
}
}