C#生成、解析xml文件以及处理报错原因
转载自:http://blog.csdn.net/lilinoscar/article/details/21027319
简单的介绍一下生成XML文件以及解析,因为有些数据不一定放到数据库,减少链接数据库
用xml还是比较好些。如果遇到问题也就是解析时报错,对于解析,可以选择用ie浏览器进行验证
是否符合xml格式,不能显示说明不正确,用记事本打开看也没有发现啥情况,复制出来到别的xml
文件里,运行可能正确,那就说明生成的xml编码有问题。还有就是节点有什么空格啥的。
Load和LoadXml方法的区别?
Load方法可以解析包括xml的头部文件“<?xml version="1.0" encoding="utf-8"?>”,而LoadXml
方法不能解析,会报错,它只能解析如:<Resources><Guid>647e7d54-321c-4bca-ac10-301de2837d9d
</Guid><Name>中国案件4</Name></Resources>文件,不能包含xml的头部文件。
1.序列化类:
/// <summary>
/// 序列化成XML
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static string XmlSerialize(object o)
{
XmlSerializer ser = new XmlSerializer(o.GetType());
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ser.Serialize(writer, o, ns);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
}
/// <summary>
/// 解析成XML
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="s"></param>
/// <returns></returns>
public static T XmlDeserialize<T>(string s)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.Load(s);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
/// <summary>
/// 解析成XML,不能解析包含头部文件<?xml version="1.0" encoding="utf-8"?>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="s"></param>
/// <returns></returns>
public static T LoadXmlDeserialize<T>(string s)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.LoadXml(s);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
2.//Resources类
public class Resources
{
public Guid Guid { get; set; }
public string Name { get; set; }
}
3.//生成xml
public void CreateXml(List<Resources> _list, string path)
{
var xml = SerializerHelper.XmlSerialize(_list).Trim();//这个地方也需要去除空格,不然也会报错,错误跟下面的一样。
// using (StreamWriter sw = new StreamWriter(path, false,Encoding.UTF8))这个生成的xml看着是没有问题
但是网页IE不能解析,说明有问题,直接去掉Encoding.UTF8即可,不然报错“根级别上的数据无效”
using (StreamWriter sw = new StreamWriter(path, false))
{
sw.Write(xml);
}
}
4.//解析XML,指定文件路径,判断文件夹是否存在以及查找文件名
DirectoryInfo di = new DirectoryInfo("Xml");
if (!di.Exists)
{
Directory.CreateDirectory("Xml");
}
if (di.GetFiles().Length > 0)
{
foreach (FileInfo fi in di.GetFiles())
{
if (fi.Name.Contains("Resource.xml"))
{
var list = SerializerHelper.XmlDeserialize<List<Resources>>("Xml/Resource.xml");
if (list.Count > 0)
{
}
}
}
}
C#生成、解析xml文件以及处理报错原因的更多相关文章
- 关于用xercesImpl包解析xml文件遇中文报错问题
今天在运行项目时报错: Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: 3 字节 UTF-8 序列的字节 3 ...
- springboot项目的maven的pom.xml文件第一行报错 Unknown Error
springboot项目的maven的pom.xml文件第一行报错 Unknown Error https://blog.csdn.net/mini_jike/article/details/9239 ...
- 【Android】使用Pull生成/解析XML文件
一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...
- eclipse 中忽略jsp, xml文件中的报错信息
有的时候, 在eclipse中, jsp, xml 文件时运行的好好的, 可是就是在eclipse中报错, 虽然不影响功能, 但看起来很烦, 去掉这些错误警告的方法是: Windows-Prefere ...
- NetCore 3.0 中使用Swagger生成Api说明文档及升级报错原因
认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参 ...
- 解析流中的Xml文件时,报错:java.net.MalformedURLException: no protocol
原来的代码: // 创建DocumentBuilder对象 DocumentBuilder b = a.newDocumentBuilder(); // 通过DocumentBuilder对象的par ...
- 创建SpringBoot项目pom.xml文件第一行报错:Non-parseable POM E:\maven\repository\org\springframework\securit
在编辑pom.xml时,第一行有个刺眼红色×,然后在Problems看到这个问题 [ERROR] The build could not read 1 project -> [Help 1]E: ...
- 使用eclipse搭建springboot项目pom.xml文件第一行报错(Maven Configuration Problem)
今天在https://start.spring.io/上搭建了一个2.1.5版本的springboot项目,但是把它导入后,pom.xml第一行报错了,查看Problems发现下面的错误 百度后发现方 ...
- Django生成脚本迁移文件时,报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
一.本人环境:django:3.0.2, python:3.8.1, pymysql:0.9.3 二.解决步骤: 1.django目录下找到 base.py文件: 2.在base.py文件中注释以下 ...
随机推荐
- 37.Node.js工具模块---处理和转换文件路径的工具 Path模块
转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方 ...
- 关于大数据项目创建时所需setting.xml(博主推荐)
我目前,收录经常用的是,这两个版本,这个根据博主我本人的经验之谈,最为稳定和合理的. 注意:我的本地路径是在D:/SoftWare/maven/repository,大家自己改为你们自己的即可. ...
- org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 211 completed: Maybe
用weblogic 12c 测试 ejb3 import javax.naming.InitialContext; import javax.naming.NamingException; impor ...
- BZOJ2806: [Ctsc2012]Cheat(广义后缀自动机,单调队列优化Dp)
Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的01串,表示N篇作文 Output N行,每行一个整 ...
- 洛谷——P1073 最优贸易 ([NOIP2009] )
https://www.luogu.org/problem/show?pid=1073 题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多 ...
- Qt 图片浏览器 实现图片的放大缩小翻转等功能
图片的功能 源码: wiget.h #ifndef WIDGET_H #define WIDGET_H #include <QPixmap> #include <QImage> ...
- SICP 习题 (2.10)解题总结: 区间除法中除于零的问题
SICP 习题 2.10 要求我们处理区间除法运算中除于零的问题. 题中讲到一个专业程序猿Ben Bitdiddle看了Alyssa的工作后提出了除于零的问题,大家留意一下这个叫Ben的人,后面会不断 ...
- JQuery 各节点获取函数:父节点,子节点,兄弟节点
jQuery.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限于父元素 jQuery.children ...
- UWP 新手教程1——UWP的前世今生
文件夹 引言 设备族群 UI 和通用输入模式 通用控件和布局面板 工具 自适应扩展 通用输入处理 引言 在本篇文章中,可以掌握下面知识: 设备族群,怎样决定目标设备 新的UI控件和新面板帮助你适应不同 ...
- C++卷积神经网络实例:tiny_cnn代码具体解释(8)——partial_connected_layer层结构类分析(上)
在之前的博文中我们已经将顶层的网络结构都介绍完毕,包括卷积层.下採样层.全连接层,在这篇博文中主要有两个任务.一是总体贯通一下卷积神经网络在对图像进行卷积处理的整个流程,二是继续我们的类分析.这次须要 ...