XML文件的写,集合XML序列化(写)。XML文件的读,递归遍历
XML文件:必须要有一个节点。检验xml文件,可以用浏览器打开,能打开表示对,否则错。
处理方法:
DOM:XmlDocument文档对象模型
Sax(事件驱动,XmlReader)
XmlSerializer(序列化):可以序列化一个类,一个泛型集合。
Linq to XML:主要用到类:Xelement XDocument XAttribute using System.Xml.Linq;
写一个XML文件:
学校,班级,学生(性别,年龄,年龄)
namespace W_R_XML_Model
{
class Program
{
static void Main(string[] args)
{//创建文档
XDocument xdoc=new XDocument();
//此文档必须包含一个根节点,节点名为()内的名字,并不是变量名。
XElement xx=new XElement("xuexiao");
xdoc.Add(xx);
//创建节点
XElement xbanji=new XElement("banji");
XElement xxuesheng=new XElement("xuesheng");
XElement xxingming=new XElement("xingming");
XElement xxingbie=new XElement("xingbie");
XElement xgender=new XElement("gender");
//根据哪些节点在哪个节点下,添加节点.同一级别的节点可以以数组形式一块添加到父节点 add,添加属性也是add,不过先newXAttribute
xxuesheng.Add(xxingming,xxingbie,xgender);
xbanji.Add(xxuesheng);
xx.Add(xbanji);
//为节点赋值 .value
//xxuesheng.Value = "李可";
xxingming.Value = "李可";
xxingbie.Value = "男";
xgender.Value = "";
//为节点添加属性,先创建属性XAttribute
XAttribute xuexiaoAttribute=new XAttribute("id",);
xx.Add(xuexiaoAttribute);
XAttribute banjiAttribute=new XAttribute("id",);
xbanji.Add(banjiAttribute);
XAttribute xueshengAttribute=new XAttribute("id",);
xxuesheng.Add(xueshengAttribute); //保存文件
xdoc.Save("lizi.xml");
}
}
}

序列化(把泛型集合写一个xml文件):常常导出数据库为XMl文档的方法,可以先建立一个集合。但是此种方法,一次性将所有数据添加到list内存,数据大的时候就用XmlReader,和XmlWriter。
namespace W_R_XML_Model
{
//先标记,再public
[Serializable]
public class onePerson
{
public string Name { get; set; }
public int Age { get; set; }
public char Gender { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<onePerson> list = new List<onePerson>//集合初始化器可以省去()
{
new onePerson {Name = "李可", Age = , Gender = '男'},//对象初始化器可以省去()
new onePerson {Name = "小翠", Age = , Gender = '女'},
new onePerson {Name = "小红", Age = , Gender = '女'}
};
//把这个泛型集合序列化成XML格式的文件
using (FileStream file = new FileStream("lisxm.xml", FileMode.Create, FileAccess.Write))
{
//找一个人来序列化 参数 序列化的类型,
XmlSerializer serializer = new XmlSerializer(typeof(List<onePerson>));
//序列化的对象和目的文件流
serializer.Serialize(file, list);
}
}
}
}
男女对应的unicode代码30007,22899
读取XML文档;
获得文档。XDocment.Load(路径)
获得根节点下的所有子节点。Xelement.root
循环子节点,获得子节点下的子节点。
namespace W_R_XML_Model
{
class Program
{
static void Main(string[] args)
{//获得文档
XDocument xDocument = XDocument.Load("xmllianxi.xml");
//获得该文档的根节点
XElement xroot= xDocument.Root;
// 将根节点带入遍历函数
fun(xroot);
Console.ReadKey();
}
public static void fun(XElement eles)
{//eles.elements一个节点的下的节点集合,并一个一个查看,比如根节点下的几个节点
foreach (var eleVar in eles.Elements())
{//如果这些集合元素还有子节点hasElements,则继续将此几点递归查询,直到没有子节点
if (eleVar.HasElements)
{
fun(eleVar);
}
else
{
Console.WriteLine(eleVar.Value);
}
}
}
}

XML文件的写,集合XML序列化(写)。XML文件的读,递归遍历的更多相关文章
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- .NET操作XML文件之泛型集合的序列化与反序列化
程序集:System.Xml.Serialization(在 System.Xml.Serialization.dll 中) 命名空间:System.Xml.Serialization 公共函数代码: ...
- net中序列化读写xml
参考http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 我们可以直接使用XmlTextReader.XmlDocument.X ...
- Java 文件夹递归遍历
import java.io.File; public class Demo1 { public static void main(String[] args) { File dir=new File ...
- 辅助的写与数据库交互的XML文件的类
现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的,不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的!如下代码就是一个实现上述的功能的辅助类,在此记录一下以备后用! p ...
- dtd文件中写的引用实体被xml文件引用后无法在浏览器中显示的问题
解决方案:把dtd文件由被xml文件外部引用改成被xml文件内部引用. 例子: 1.xml文件: <?xml version="1.0" encoding="UTF ...
- c# .Net :Excel NPOI导入导出操作教程之List集合的数据写到一个Excel文件并导出
将List集合的数据写到一个Excel文件并导出示例: using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using Sys ...
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比
测试结果如下图: 测试结果整理后: 结论: 1.这几个工具中,protobuf-net序列化和反序列化效率是最快的 2.BinaryFormatter和Newtonsoft.Json反序列化慢的比较多 ...
随机推荐
- mysql 中find_in_set()和in()用法比较
mysql 中find_in_set()和in()用法比较 在mysql中in可以包括指定的数字,而find_in_set()用于特定的数据类型. find_in_set 函数使用方法 个例子来说:有 ...
- XFire构建web service客户端的五种方式
这里并未涉及到JSR 181 Annotations 的相关应用,具体的三种方式如下 ① 通过WSDL地址来创建动态客户端 ② 通过服务端提供的接口来创建客户端 ③ 使用Ant通过WSDL文件来生成客 ...
- 从windows到linux的shell脚本编码和格式问题
从windows到linux的shell脚本编码和格式问题 从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...
- Laravel日志查看器 -- log-viewer扩展
1.修改laravel配置文件. config\app.php 'log'=>'daily' 2.在项目目录中composer命令安装扩展:composer require arcanedev/ ...
- SpringAOP基础 - 静态代理设计模式
代理模式在实现过程中,要创建一个接口(社交技巧-接口),代理类(经纪人 - 类)和真实类(范冰冰 - 类)同时实现这个接口. 举个例子: 我们想要找范冰冰吃饭,但是呢,她是大明星,不可能轻易见我们,我 ...
- Java堆外内存之六:堆外内存溢出问题排查
一.堆外内存组成 通常JVM的参数我们会配置 -Xms 堆初始内存 -Xmx 堆最大内存 -XX:+UseG1GC/CMS 垃圾回收器 -XX:+DisableExplicitGC 禁止显示GC -X ...
- 尽量少嵌套无用的div;外部文件尽量使用link而不要使用用@import
最近的工作又学到了很多东西,在这里记录一下. 1,尽量少嵌套无用的div,这个问题领导很严肃的跟我提过很多次,因为我很喜欢用很多div,而且有很多div都是无存在意义的.后来领导给了我一些资料,我看了 ...
- [UE4]代理事件(C++)
用宏定义类似格式: DECLARE_DELEGATE //普通代理 DECLARE_DYNAMIC_DELEGATE_TwoParams //动态代理 DECLARE_DYNAMIC_MULTICAS ...
- sklearn.externals import joblib模块保存和下载使用模型的用法实例
#加载模块 from sklearn import datasets from sklearn.externals import joblib from sklearn.linear_model im ...
- delphi WebBrowser的使用方法详解(三)
WebBrowser 操作记要 WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 ...