转载自: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文件以及处理报错原因的更多相关文章

  1. 关于用xercesImpl包解析xml文件遇中文报错问题

    今天在运行项目时报错: Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: 3 字节 UTF-8 序列的字节 3 ...

  2. springboot项目的maven的pom.xml文件第一行报错 Unknown Error

    springboot项目的maven的pom.xml文件第一行报错 Unknown Error https://blog.csdn.net/mini_jike/article/details/9239 ...

  3. 【Android】使用Pull生成/解析XML文件

    一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...

  4. eclipse 中忽略jsp, xml文件中的报错信息

    有的时候, 在eclipse中, jsp, xml 文件时运行的好好的, 可是就是在eclipse中报错, 虽然不影响功能, 但看起来很烦, 去掉这些错误警告的方法是: Windows-Prefere ...

  5. NetCore 3.0 中使用Swagger生成Api说明文档及升级报错原因

    认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参 ...

  6. 解析流中的Xml文件时,报错:java.net.MalformedURLException: no protocol

    原来的代码: // 创建DocumentBuilder对象 DocumentBuilder b = a.newDocumentBuilder(); // 通过DocumentBuilder对象的par ...

  7. 创建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: ...

  8. 使用eclipse搭建springboot项目pom.xml文件第一行报错(Maven Configuration Problem)

    今天在https://start.spring.io/上搭建了一个2.1.5版本的springboot项目,但是把它导入后,pom.xml第一行报错了,查看Problems发现下面的错误 百度后发现方 ...

  9. 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文件中注释以下 ...

随机推荐

  1. 带你走进EJB--EJB和Spring对比(转)

    http://blog.csdn.net/jnqqls/article/details/17723417 通过对EJB系列的总结和学习我们已经对EJB有了基本的了解,但是为了更进一步的去深入学习EJB ...

  2. git提交代码到本地仓库和远程仓库

    5.commit代码到本地git仓库 选中需要 Commit 的项目,右键->Team->Commit,       填写相关的 Commit message,并选择需要提交的 Files ...

  3. [React] Render Text Only Components in React 16

    In this session we create a comment component to explore how to create components that only render t ...

  4. 学习笔记(一):offset

    很多初学者对于JavaScript中的offset.scroll.client一直弄不明白,虽然网上到处都可以看一张图(图1),但这张图太多太杂,并且由于浏览器差异性,图示也不完全正确. 图一 不知道 ...

  5. python一切皆对象的理解

    min_error=pls(x_train, x_test, y_train, y_test) #这里我之前写的是error,但是前面有一个定义的error函数.所以导致出现了警告. 可能是因为pyt ...

  6. Flask项目之手机端租房网站的实战开发(四)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...

  7. HSV颜色模型

    HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model). 注意的是OpenC ...

  8. css结构设计思想

    本文摘自博客园-予沁安的文章:结构化CSS设计思维,作为学习笔记记录一下 1.LESS.SASS等预处理器给CSS开发带来了语法的灵活和便利,其本身却没有给我们带来结构化设计思维.很少有人讨论CSS的 ...

  9. Surging 分布式微服务框架使用入门

    原文:Surging 分布式微服务框架使用入门 前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与S ...

  10. SOAP消息结构

    邵盛松 2012-5-22 一 SOAP消息结构 SOAP消息包括以下元素 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息,XML文件的顶层元素,代表该文件为SOAP消 ...