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. ES之八:elasticsearch2.x下的JAVA API示例

    D:\soft\elasticsearch\elasticsearch-2.1.0\lib package com.dxz.es; import java.net.InetAddress; impor ...

  2. [转]NSIS:常量大全

    原文链接 http://www.flighty.cn/html/bushu/20140915_251.html ;轻狂志www.flighty.cn ;运行后会在桌面生成NSIS常量大全.txt文件 ...

  3. 数据读取速度达1.5G/s,UFS 2.1存储技术曝光

    目前最快的是苹果NVME,当然UFS2.1也不差 iPhone6s与iPhone6s Plus在硬件的规格上有了很大的提升,但是它们身上的变化远没有苹果在发布会上所提到的A9处理器.1200万摄像头以 ...

  4. CentOS 6.6下安装配置Tomcat环境

    本文转载至:http://www.linuxidc.com/Linux/2015-08/122234.htm 实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验 ...

  5. git clone的时候filename too long解决办法

    在git bash中,运行下列命令: git config --global core.longpaths true

  6. 含有不等式约束的优化问题——KKT条件

    优化问题: 其中, 定义:对于一个不等式约束,如果,那么称不等式约束是处起作用的约束. 定义:设满足,设为起作用不等式约束的下标集: 如果向量:是线性无关的,则称是一个正则点. 下面给出某个点是局部极 ...

  7. javascript继承之原型式继承(四)

    javascript之父道格拉斯在2006年给出了这样一串代码,来实现继承. function object(o) { function F() { } F.prototype = o; return ...

  8. centos 7 mount usb hard disk(ntfs format)

    1. yum install -y epel-release* 2. yum install -y ntfs-3g 3. 命令:fdisk -l (查看磁盘分区信息) [root@devserverg ...

  9. [ffmpeg]deocde audio(v3.3.2)

    /* * Copyright (c) 2001 Fabrice Bellard * * Permission is hereby granted, free of charge, to any per ...

  10. Django的DRF序列化方法

    安装rest_framework -- pip install djangorestframework -- 注册rest_framework序列化 -- Python--json -- 第一版 用v ...