用习惯了newTownSoft.json 的json反序列化。碰到xml是真的不习惯。

每次json反序列化都是直接把json丢到bejson网站生成一个实体类,稍微修改修改一点点变量名。然后直接newTownSoft反序列化,一下就得到一个实体类了。今天调某个接口,碰到xml。

记录如下。

xml

<response>
<functionID>setItemsPics</functionID>
<time>2017-09-07 15:51:04</time>
<ItemsIDList>
  <itemIDInfo>
    <operCode>0</operCode>
    <operation>操作成功</operation>
  </itemIDInfo>
<itemIDInfo>
  <itemID>1125507057</itemID>
    <operCode>0</operCode>
    <operation>操作成功</operation>
  </itemIDInfo>
</ItemsIDList>
</response>

实体类如下:先引用 using System.Xml.Serialization;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace DDTopManager.Response
{
[XmlRoot("response")]
public class RSPItemPicSet
{ //操作返回xml示例,按这个xml格式定义可序列化的实体类
// public string str = @"<response>
// <functionID>setItemsPics</functionID>
// <time>2017-09-07 15:51:04</time>
// <ItemsIDList>
// <itemIDInfo>
// <itemID>1125550957</itemID>
// <operCode>0</operCode>
// <operation>操作成功</operation>
// </itemIDInfo>
// <itemIDInfo>
// <itemID>1125507057</itemID>
// <operCode>0</operCode>
// <operation>操作成功</operation>
// </itemIDInfo>
// </ItemsIDList>
//</response>";
[XmlElement("functionID")]
public string functionID { get; set; }
[XmlElement("time")]
public string time { get; set; } [XmlArray("ItemsIDList"), XmlArrayItem("itemIDInfo")]
public List<itemIDInfo> ItemsIDList { get; set; }
[XmlRoot("itemIDInfo")]
public class itemIDInfo
{
[XmlElement("itemID")]
public string itemID { get; set; }
[XmlElement("operCode")]
public string operCode { get; set; }
[XmlElement("operation")]
public string operation { get; set; }
}
} }

  引用(这是从str这个xml中反序列化到实体类)大致如下:

XmlSerializer se = new XmlSerializer(typeof(RSPOrdersListGet));

byte[] arry = Encoding.UTF8.GetBytes(str);
System.IO.Stream me = new System.IO.MemoryStream(arry);
RSPOrdersListGet rsp = (RSPOrdersListGet)se.Deserialize(me);

  序列化如下:

 RSPOrdersListGet RSPLG = new RSPOrdersListGet();
RSPLG.functionID = "setItemsPics"; List<itemIDInfo> itemidinfos = new List<itemIDInfo>();
itemIDInfo idi = new itemIDInfo();
idi.operation = "000";
idi.operCode = "0011";
idi.itemId = "aaa";
itemidinfos.Add(idi);
itemIDInfo idi1 = new itemIDInfo();
idi1.operation = "000";
idi1.operCode = "0011";
idi1.itemId = "bbb";
itemidinfos.Add(idi1);
RSPLG.ItemsIDList = itemidinfos;
XmlSerializer rSPOrdersListGet = new XmlSerializer(typeof(RSPOrdersListGet));
rSPOrdersListGet.Serialize(Console.Out, RSPLG);

  序列化的时候改命名空间编码等

            XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = " ";
settings.NewLineChars = "\r\n";
settings.Encoding = Encoding.GetEncoding("gbk");
using (XmlWriter xmlWriter = XmlWriter.Create(sm, settings))
{
// 强制指定命名空间,覆盖默认的命名空间
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
rSPOrdersListGet.Serialize(xmlWriter, RSTGS, namespaces);
xmlWriter.Close();
};

  

记录,以免忘记。

有一点和newTownSoft.json序列化和反序列化不同的是,比如数字List<Entity> MyData 这个MyData 和json要对的上,

这里的直接用 头部的约束来定义即可

c# xml序列化和反序列化。也就是xml的解析和反解析。的更多相关文章

  1. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  4. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  5. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  6. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  7. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

  8. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  9. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  10. C#实现接口xml序列化与反序列化

    C#实现接口xml序列化与反序列化   C#中接口无法被xml序列化,提示不支持.百度和bing也搜不到,只好自己动手写了 原理上肯定支持,.Net自己的xml序列化有一个IXmlSerializab ...

随机推荐

  1. [转]ubuntu linux下DNS重启后丢失(不是Network-manager造成的情况)

    从网上得知 /etc/resolv.conf中的DNS配置是从/etc/resolvconf/resolv.conf.d/head中加载而来,所以每回改resolv.conf都会失效,在此文件里面已经 ...

  2. (转)UI设计实战篇——利用Bootstrap框架制作查询页面的界面

    原文地址:http://www.cnblogs.com/grenet/p/3413085.html Bootstrap框架是一个前端UI设计的框架,它提供了统一的UI界面,简化了设计界面UI的过程(缺 ...

  3. 解决svn:E155037错误(另附查看.db文件的工具)

    今天使用svn提交代码的时候出问题了,Error:svn: E155037.....Previous operation has not finished; run 'cleanup' if it w ...

  4. 洛谷 P2146 [NOI2015]软件包管理器 (树链剖分模板题)

    题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个 ...

  5. BZOJ 3884 上帝与集合的正确用法(扩展欧拉定理)

    Description   根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...

  6. 8、Semantic-UI之其他按钮样式

    8.1 其他按钮样式定义 示例:定义其他按钮样式 定义圆形图标按钮样式 <div class="ui circular icon button"><i class ...

  7. Linux Guard Service - 守护进程分裂

    分裂守护进程 由于fork()后第一行仍然在循环中,使用fork()返回值鉴别当前进程的性质 int i = 0; for (i = 0; i < 10; i++) { // sleep(1); ...

  8. [python] [转]如何自动生成和安装requirements.txt依赖

    [转]如何自动生成和安装requirements.txt依赖 在查看别人的Python项目时,经常会看到一个requirements.txt文件,里面记录了当前程序的所有依赖包及其精确版本号.这个文件 ...

  9. Replication--修改复制代理配置来查看代理运行情况

    1>在复制监视器中选中订阅右键 2>选择代理配置文件 3>将代理配置文件设置为”详细历史记录代理配置文件“,确定以保存 4>重启代理 5>代理运行一段时间后,重启代理 6 ...

  10. linux命令之进程管理命令

    1.ps:查看进程 该命令用于列出命令执行时刻的进程快照,如果想要动态的显示进程信息,可以使用top命令. 参数 说明 a(常用) 显示与终端相关的所有进程,包含每个进程的完整路径 x(常用) 显示与 ...