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. ssl证书(https) iis 配置安装

    因客户给的 cer的文件 导入提示 失败,所以用 了 客户给的 crt的格式的证书. 安装证书操作如下:iis>>服务器证书>>右侧菜单-完成证书申请>>选择 本文 ...

  2. 1.环境搭建-mysql+tomcat+myeclipse安装并配置

    一.安装mysql数据库并配置 下载地址:https://pan.baidu.com/s/1OJ3ggda7Cthl4GCxWKbTng 密码:sd6b 1.打开安装程序

  3. 廖雪峰Java1-2程序基础-8字符和字符串

    1.字符类型char char是基本的数据类型 char:保存一个字符,如英文字符.中文字符. Java使用unicode表示字符,可以将char赋值给int类型,查看字符对应的unicode编码. ...

  4. 1073 Scientific Notation (20 分)

    1073 Scientific Notation (20 分) Scientific notation is the way that scientists easily handle very la ...

  5. [UE4]计算2点坐标附近的坐标:线性插值法

    float distance = FVector::Distance(SelfLocation, TargetLocation); .f / distance; DrawDebugPoint(GetW ...

  6. 解析Excel数据

    解析Excel数据常用的方式就是使用POI和JXL工具了,这两种工具使用起来有些类似,这里记录一下使用方式提供个参考 POI使用 File file = new File(filePath); Fil ...

  7. hint之qb_name

    http://www.thinkindata.com/?p=34 该hint用于子查询(query_block)   很多的情况下,如果子查询共用相同的别名(alias), 可以通过设定不同的qb_n ...

  8. Oracle 学习SQL

    开始记录最近学习了一些基础的SQL知识. 说起数据库,想到当时学习数据库概论这本书的时候,就学了一些基本的SQL语句以及数据库理论知识,记得最当时考试的数据库范式的知识,不知当时是怎么过来的,到现在对 ...

  9. SDOI 2017 天才黑客

    /* 根据claris的 博客以及 beginend 的博客来写的 首先考虑如何求出最短路 可以从样例看出 路径是从边走到边的, 所以我们将边看作点 有共同端点的两边之间 互相连边, 边权为lcp. ...

  10. 搭建Discuz论坛

    准备 LAMP 环境 LAMP 是 Linux.Apache.MySQL 和 PHP 的缩写,是 Discuz 论坛系统依赖的基础运行环境.我们先来准备 LAMP 环境 安装 MySQL 使用 yum ...