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文件的读,递归遍历的更多相关文章

  1. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  2. .NET操作XML文件之泛型集合的序列化与反序列化

    程序集:System.Xml.Serialization(在 System.Xml.Serialization.dll 中) 命名空间:System.Xml.Serialization 公共函数代码: ...

  3. net中序列化读写xml

    参考http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 我们可以直接使用XmlTextReader.XmlDocument.X ...

  4. Java 文件夹递归遍历

    import java.io.File; public class Demo1 { public static void main(String[] args) { File dir=new File ...

  5. 辅助的写与数据库交互的XML文件的类

    现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的,不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的!如下代码就是一个实现上述的功能的辅助类,在此记录一下以备后用! p ...

  6. dtd文件中写的引用实体被xml文件引用后无法在浏览器中显示的问题

    解决方案:把dtd文件由被xml文件外部引用改成被xml文件内部引用. 例子: 1.xml文件: <?xml version="1.0" encoding="UTF ...

  7. c# .Net :Excel NPOI导入导出操作教程之List集合的数据写到一个Excel文件并导出

    将List集合的数据写到一个Excel文件并导出示例: using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using Sys ...

  8. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  9. C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比

    测试结果如下图: 测试结果整理后: 结论: 1.这几个工具中,protobuf-net序列化和反序列化效率是最快的 2.BinaryFormatter和Newtonsoft.Json反序列化慢的比较多 ...

随机推荐

  1. Yii2 环境配置生产环境和测试环境

    默认的Debug配置 在入口文件web/index.php中 defined('YII_DEBUG') or define('YII_DEBUG', true);defined('YII_ENV') ...

  2. Oracle根据表的大小排序SQL语句

    --按照数据行数排序select table_name,blocks,num_rows from dba_tables where owner not like '%SYS%' and table_n ...

  3. bzoj 3622 已经没有什么好害怕的了——二项式反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3622 令 f[i] 表示钦定 i 对 a[ ]>b[ ] 的关系的方案数:g[i] 表 ...

  4. C# 中取绝对值的函数

    System.Math.Abs(float value); System.Math.Abs(decimal value); System.Math.Abs(int value); System.Mat ...

  5. JZ2440 裸机驱动 第11章 通用异步收发器UART

    本章目标: 了解UART原理: 掌握S3C2410/S3C2440中UART的使用 11.1 UART原理及UART内部使用方法 11.1.1 UART原理说明     UART用于传输串行数据:   ...

  6. PLSQL使用SCN码恢复误删表数据

    #查询数据库当前的SCN码select current_scn from v$database 1250494 #将当前的SCN码减小后,根据SCN码查询误删数据表的数据情况#直至找到被删的数据为止s ...

  7. github 改位置

    在设置里改位置后,先在本地库上右键"stop track this repo". 然后在在线库重新CLONE.

  8. Redis内存数据库操作命令详解

    一.连接操作相关的命令 Ÿ   quit:关闭连接(connection) Ÿ   auth:简单密码认证 二.对value操作的命令 Ÿ   exists(key):确认一个key是否存在 Ÿ   ...

  9. Spring IOC - 控制反转(依赖注入) - 配置初始化和销毁的方法

    在Spring中如果某个bean在初始化之后,或销毁之前要做一些额外操作可以为该bean配置初始化和销毁的我方法,在这些方法中完成需要的功能. 实验: 通过断点调试模式,测试初始化方法和销毁方法的执行 ...

  10. GIS(地理信息系统)

    ylbtech-杂项:GIS(地理信息系统) 地理信息系统(Geographic Information System或 Geo-Information system,GIS)有时又称为“地学信息系统 ...