将对象转换为XMLstring

我有一个名为WebserviceType的类,我从工具xsd.exe从XSD文件中获取。

现在我想将一个WebServiceType对象的实例反序列化为一个string。 我怎样才能做到这一点?

MethodCheckType对象具有一个WebServiceType数组作为参数。

我第一次尝试就像我序列化:与一个XmlSerializer和一个StringWriter (当序列化我使用了一个StringReader )。

这是我序列化WebServiceType对象的方法:

 XmlSerializer serializer = new XmlSerializer(typeof(MethodCheckType)); MethodCheckType output = null; StringReader reader = null; // catch global exception, logg it and throw it try { reader = new StringReader(path); output = (MethodCheckType)serializer.Deserialize(reader); } catch (Exception) { throw; } finally { reader.Dispose(); } return output.WebService; 

编辑:

也许我可以用不同的话来说:另一方面,我已经得到了这个MethodCheckType对象的一个​​实例,我得到了我从中序列化这个对象的XML文档。 现在我想把这个实例转换成一个stringforms的XML文档。 在这之后,我必须certificate两个string(XML文档)是否相同。 我必须这样做,因为我对第一种方法进行了unit testing,在这种方法中,我将XML文档读入StringReader并将其序列化为MethodCheckType对象。

这里有两种方法的转换方法。 这是你class级的实例

 public string ToXML() { var stringwriter = new System.IO.StringWriter(); var serializer = new XmlSerializer(this.GetType()); serializer.Serialize(stringwriter, this); return stringwriter.ToString(); } public static YourClass LoadFromXMLString(string xmlText) { var stringReader = new System.IO.StringReader(xmlText); var serializer = new XmlSerializer(typeof(YourClass )); return serializer.Deserialize(stringReader) as YourClass ; } 

我意识到这是一个非常古老的post,但是在看了LB的回复之后,我想到了如何能够改进已接受的答案,并将其作为我自己的应用程序的通用。 以下是我想到的:

 public static string Serialize<T>(T dataToSerialize) { try { var stringwriter = new System.IO.StringWriter(); var serializer = new XmlSerializer(typeof(T)); serializer.Serialize(stringwriter, dataToSerialize); return stringwriter.ToString(); } catch { throw; } } public static T Deserialize<T>(string xmlText) { try { var stringReader = new System.IO.StringReader(xmlText); var serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(stringReader); } catch { throw; } } 

现在可以将这些方法放置在一个静态助手类中,这意味着不需要将代码复制到需要序列化的每个类。

  public static string Serialize(object dataToSerialize) { if(dataToSerialize==null) return null; using (StringWriter stringwriter = new System.IO.StringWriter()) { var serializer = new XmlSerializer(dataToSerialize.GetType()); serializer.Serialize(stringwriter, dataToSerialize); return stringwriter.ToString(); } } public static T Deserialize<T>(string xmlText) { if(String.IsNullOrWhiteSpace(xmlText)) return default(T); using (StringReader stringReader = new System.IO.StringReader(xmlText)) { var serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(stringReader); } }