用XmlSerializer.Deserialize将XML转实体遇到的问题
1、命名空间的问题
- 1.1 XML示例:

- 1.1 XML示例:
1.2 反序列化代码:
点击查看源代码
```
public static object DeserializeFromXml<T>(string xmlFilePath)
{
object result = null;
using (FileStream fs = new FileStream(xmlFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
XmlSerializer xs = new XmlSerializer(typeof(T));
result = xs.Deserialize(fs);
fs.Close();
fs.Dispose();
}
return result;
}
```
</details>
- 1.3 程序报异常:

- 1.3 程序报异常:
- 1.4 修复异常:
将1.2中代码里new XmlSerializer处增加命名空间;如下:
XmlSerializer xs = new XmlSerializer(type, "http://www.w3.org/2000/09/xmldsig#");
- 1.4 修复异常:
2、反序列化成实体时,List为空的异常
- 2.1 XML实例:

- 2.1 XML实例:
- 2.2 实体示例:

- 2.2 实体示例:
- 2.3 程序报异常:
最终实体里的两个List均为空(count=0);
- 2.3 程序报异常:
- 2.4 修复异常:
XmlArrayAttribute + XmlArrayItemAttribute 在序列化具有外部容器元素的集合时应使用。当没有外部容器时,应使用 XmlElementAttribute;
将实体List前面增加注解XmlElementAttribute,如下图:

用XmlSerializer.Deserialize将XML转实体遇到的问题的更多相关文章
- c# XML和实体类之间相互转换(序列化和反序列化)[砖]
link: http://blog.okbase.net/haobao/archive/62.html by: 好饱 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlU ...
- C# XML和实体类之间相互转换(序列化和反序列化)
我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...
- XML和实体类之间相互转换(序列化和反序列化)
我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- 利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类
一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...
- XML外部实体注入漏洞(XXE)
转自腾讯安全应急响应中心 一.XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声 ...
- XXE(XML External Entity attack)XML外部实体注入攻击
导语 XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击.由于程序在解析输入的XML数据时,解析了攻击者 ...
- 微信支付的JAVA SDK存在漏洞,可导致商家服务器被入侵(绕过支付)XML外部实体注入防护
XML外部实体注入 例: InputStream is = Test01.class.getClassLoader().getResourceAsStream("evil.xml" ...
- XML与 实体的相互转化
using System; using System.Linq; using System.Xml; using System.Reflection; using System.Data; using ...
- 【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析
0x01 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chichu/ ...
- XML外部实体(XXE)注入详解
###XML与xxe注入基础知识 1.XMl定义 XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言:可扩展的样式语言(Ex ...
随机推荐
- mysql的查询--子查询,order by,group by,having
一. 1.多表查询 格式1: select 字段列表 from 表1 join 表2 on 表1.字段1=表2.字段1 where 查询条件 格式2: select 字段列表 from 表1 join ...
- Java设计模式 —— 原型模式
7 原型模式 7.1 原型模式概述 Prototype Pattern:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象. 原型模式的工作原理:将一个原型对象传给创建者,该创建者通 ...
- jdbc-plus是一款基于JdbcTemplate增强工具包, 基于JdbcTemplate已实现分页、多租户等插件,可自定义扩展插件
jdbc-plus简介 jdbc-plus是一款基于JdbcTemplate增强工具包, 基于JdbcTemplate已实现分页.多租户等插件,可自定义扩展插件.项目地址: https://githu ...
- react中受控组件与非受控组件--
非受控组件:随用随取 1 render() { 2 return ( 3 <div> 4 <h1>非受控组件</h1> 5 <form action=&quo ...
- 小程序 TS 封装API
通俗易懂不说废话,拿去用,看两遍就能理解. 1 const { baseUrl } = require('./env').dev; 2 const token = wx.getStorageSync( ...
- [Pytorch框架] 2.1.2 使用PyTorch计算梯度数值
文章目录 使用PyTorch计算梯度数值 Autograd 简单的自动求导 复杂的自动求导 Autograd 过程解析 扩展Autograd import torch torch.__version_ ...
- 群论中的 Lagrange 定理
今天跟 hym 打球时讲到了这个东西,突然发现证明拉格朗日定理的思想有许多跟轨道-稳定集定理很像,所以这里又记录一下. 为了证明 Lagrange 定理,我们需要了解一些关于子群和陪集的性质. 首先给 ...
- 使用require.context实现优雅的预加载
前言 在前端开发中,对页面花里胡哨度[注1]要求越高的页面,用到的图片.音频什么的就越多,比如什么结婚请柬.展会请柬.发布会宣传页.数据大屏.虽然现在浏览器不允许网页在没有用户交互的情况下播放音频,但 ...
- Hardhat 开发框架 - Solidity开发教程连载
Decert.me 要连载教程了, <Solidity 开发教程> 力求系统.深入的介绍 Solidity 开发, 同时这是一套交互式教程,你可以实时的修改教程里的合约代码并运行. 本教程 ...
- pytest插件开发
插件的加载方式 外部插件: pip install 安装的插件 本地插件: pytest 自动模块发现机制(conftest.py存放) 内置插件: 代码内部的_pytest目录加载 什么是hook ...