Xml反序列化记录
2024-08-28 12:32:07
1、概述
公司项目遇到一个需要对接webservice的,webservice大部分用的都是xml来传输的,这里记录一下xml反序列化遇到的问题
2、xml工具类
xml序列化:
public static string Serialize<T>(T obj)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
serializer.Serialize(writer, obj);
string xml = writer.ToString();
writer.Close();
writer.Dispose(); return xml;
}
xml反序列化
public static T Deserialize<T>(string xml)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
StringReader reader = new StringReader(xml);
T result = (T)(serializer.Deserialize(reader));
reader.Close();
reader.Dispose(); return result;
}
3、webservice调用
1、右键依赖项,选择添加连接的服务
2、选择连接的服务
3、配置好后就可以调用
InfoToPingBiaoSoapClient client = new InfoToPingBiaoSoapClient(InfoToPingBiaoSoapClient.EndpointConfiguration.InfoToPingBiaoSoap12);
4、遇到的问题
通过在线的xml转json,在从json转C#就可以获得对应类,因为xml反序列化只会提醒反序列化出错,却不会告诉你哪个字段出错,所以可能会有以下几个问题
1、转成C#的类型大小写可能和xml不一致,会导致反序列化失败
可以自己实例化一个类型,然后序列化,将序列化后的xml和webservice返回的xml进行对比,避免大小写问题
2、xml类型的泛型问题
public class xmlroot<T>
{
/// <summary>
///
/// </summary>
public danweis<T> danweis { get; set; }
}
如上图的泛型,在xml序列化反序列化中会变成<xmlrootOfdanweiinfo>,danweiinfo是传入的类型,这种情况下需要加上 [XmlRoot("xmlroot")]特性标签指定转化类型即可。
最新文章
- 【转】Description Resource Path Location Type Java compiler level&;n
- word2vec
- git 仓库、分支的区别
- poj2676 Sudoku
- WIN2008 R2 安装SQLSERVER2008笔记
- redis-persist上线
- 黄聪:Discuz X2.5、3.0、3.1、3.2 如何不用插件实现用户名只允许中文注册
- Cassandra目录
- 利用Nutch和Tomcat构建搜索引擎
- Careercup - Google面试题 - 4807591515389952
- bugku crypto easy-crypto
- unicode utf-8 ascll编码比较
- 【2019年03月29日】股票的滚动市盈率PE最低排名
- python second lesson
- vim命令记录
- [PHP] 03 - Form &; Input
- 爆出的法拉第未来(Faraday Future,以下简称“FF”)
- Linux查看系统当前字符集
- CSS 学习路线(一)元素
- SharePoint自动化系列——Upload files to SharePoint library using PowerShell.