Flu*_*eng 78 c# xml serialization
我有一个名为WebserviceType我从XSD文件中的工具xsd.exe 获得的类.
现在我想将WebServiceType对象的实例反序列化为字符串.我怎样才能做到这一点?
该MethodCheckType对象具有params WebServiceType数组.
我的第一次尝试就像我序列化了一样:a XmlSerializer和a StringWriter(序列化我使用了a 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;
Run Code Online (Sandbox Code Playgroud)
编辑:
也许我可以用不同的语言说:我有一个这个MethodCheckType对象的实例另一方面我有一个XML文档,我从中序列化了这个对象.现在我想以字符串的形式将此实例转换为XML文档.在此之后,我必须证明两个字符串(XML文档)是否相同.我必须这样做,因为我对第一种方法进行单元测试,在该方法中我将XML文档读入StringReader并将其序列化为MethodCheckType对象.
Tom*_*sup 168
这是两种方式的转换方法.这是你班级的实例
public string ToXML()
{
using(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)
{
using(var stringReader = new System.IO.StringReader(xmlText))
{
var serializer = new XmlSerializer(typeof(YourClass ));
return serializer.Deserialize(stringReader) as YourClass ;
}
}
Run Code Online (Sandbox Code Playgroud)
Wil*_*ith 74
我意识到这是一个非常古老的帖子,但在看了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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在可以将这些方法放在静态助手类中,这意味着不需要对每个需要序列化的类进行代码复制.
Ela*_*amy 19
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
177288 次 |
| 最近记录: |