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反序列化慢的比较多 ...
随机推荐
- VS2010/MFC编程入门系列教程 (转)
http://www.jizhuomi.com/school/ 鸡啄米编程课堂 http://www.jizhuomi.com/software/257.html http://blog.csdn. ...
- 洛谷 3706 [SDOI2017]硬币游戏——思路
题目:https://www.luogu.org/problemnew/show/P3706 题解:https://blog.csdn.net/gjghfd/article/details/80355 ...
- MySQL的Join使用
在MySQL(以5.1为例)中,表连接的语法可以参见MySQL官方手册:MySQL官方手册-JOIN 在查询中,连接的语法类似 SELECT select_expr FROM table_refere ...
- mac的framework的路径
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/S ...
- java newInstance() 的参数版本与无参数版本详解
newInstance() 的参数版本与无参数版本详解 博客分类: Core Java 通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.new ...
- 读书笔记:Sheldon.M.Ross:概率论基础教程:2014.01.22
贝叶斯公式与全概率公式 全概率公式:如果一件事情的发生有多个可能途径,那么这件事情的发生概率就是在不同途径下此事件发生的条件概率的加权平均.权值为各途径本身的发生概率. 贝叶斯公式:通过例子说明其含义 ...
- Spring DI - 依赖注入
1.IOC(DI) - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生 ...
- shell 10流程控制
if 判断 if #shell #!/bin/sh a=5 if [[ $a > 3 ]];then echo "$a>3" fi #写成一行 if [[ $a < ...
- AWS CLI以及AWS S3 SYNC命令行使用
1.到AWS的IAM创建用户,并且获取到访问密钥 ID 和私有访问密钥.下载密钥并保存. 2.到http://docs.amazonaws.cn/cli/latest/userguide/instal ...
- mdm9x07 ATC AT+QCFG usbnet
1 中文AT命令详解 1.1. AT+QCFG 扩展配置 AT+ QCFG 扩展配置 测试命令 AT+QCFG=? 响应 …… +QCFG: "usbnet" ...