使用XSD(.Net C#4.0)中自动生成的代理类

使用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生成了一个名为“FacturaE”的代理类

我可以实例化这个类,填充它的信息,并使用XmlSerializer保存为XML

但是,给定一个格式良好的XML文件,如何将其读入“FacturaE”


感谢

作为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();
}
}
}