博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML的解析和保存
阅读量:4512 次
发布时间:2019-06-08

本文共 2672 字,大约阅读时间需要 8 分钟。

1、XML(extensible markup language;XML )

  定义:,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 
  
  XML语法规范:  标签(Tag)、嵌套(Nest)、属性(Attribute) [标签闭合、属性双引号、大小写敏感]
   
  XML结构:父节点、子节点、兄弟节点
  
  常见方法:DOM(文档对象模型)、Sax(事件驱动、XmlTextReader)、XmlSerializer(序列化)、Linq to XML
  
  常用类型:XElement、XDocument、XAttribute
  
2、使用代码编写XML文件
  [1]、注意:(1)、需要.Net Framework 3.5版本才能使用XDocument对象。
    (2)、XDOcument类相比于XmlDocument类,配合Linq使用更方便
   
  [2]、创建XML文档:
    new XDocument对象
    创建一个根节点XElement:构造方法中定义节点名字
    加到XML文档中:Add() 方法
    文档保存:Save() 方法
    添加属性:new 一个Attribute、Add上
    添加节点:new一个Element、可以设定Value给定值
    
  [3]、读取XML文件
    加载文档:XDocument.Load()方法
    获取根节点:Root属性
    元素签名与值(所以):Name、value属性
    获取直接子元素:Element方法与Elements方法
    读取属性:Attribute方法与Attributes方法,使用value
    获取所以子节点:递归
    
  实例1:            

//创建Xdocument对象
         
XDocument xDoc =
new 
XDocument();
         
//创建一个根节点,定义节点名字Student
         
XElement xEle =
new 
XElement(
"Student"
);
         
//加载到XML文档
         
xDoc.Add(xEle);
 
        
//添加一个属性值,
         
XAttribute xAttr =
new 
XAttribute(
"Id"
,
"101"
);
         
xEle.Add(xAttr);
 
         
//添加节点
         
XElement xEleName =
new 
XElement(
"Name"
,
"dede"
);
         
XElement xEleAge =
new 
XElement(
"Age"
,
"23"
);
         
XElement xEleGender =
new 
XElement(
"Gender"
,
"男"
);
         
xEle.Add(xEleName,xEleAge,xEleGender);
         
xEleAge.Value =
"22"
;
         
//保存文档
         
xDoc.Save(
@"d:\caoyi.xml"
);

 

   

*****************输出的XML文档*************************
 
<?xml version=
"1.0" 
encoding=
"utf-8"
?>
  
<Student Id=
"101"
>
  
<Name>dede</Name>
  
<Age>22</Age>
  
<Gender>男</Gender>
  
</Student>
*******************************************************

 

   //读取XML文档

XDocument XDoc2 = XDocument.Load(
@"d:\caoyi.xml"
);
//获取根节点
XElement Root = XDoc2.Root;
//输出根节点的Name,Value
Console.WriteLine(
"Root.Name:{0}"
,Root.Name);
//输出:Student
Console.WriteLine(
"Root.Value:{0}"
,Root.Value);
//输出:dede22男
Console.WriteLine(
"Root.ToString:{0}"
,Root.ToString());
//输出:节点下的整个XML
//获取子元素
XElement xEle1 =Root.Element(
"Name"
);
//获取子元素组
Console.WriteLine(xEle1.Value);
//输出:dede
 
foreach 
(XElement ele
in 
Root.Elements())
{
    
Console.WriteLine(
"{0}-{1}"
,ele.Name,ele.Value);
}

 

 

  [3]、XML序列化

    把对象序列化存储在本地文件中,using System.Xml.Serialization;,对象标示[Serializable]
    实例:

List<Person> perList =
new 
List<Person>()
      
{
          
new 
Person(){ Name=
"张三1"
,Age=19, Gender=
'男'
},
          
new 
Person(){ Name=
"张三2"
,Age=19, Gender=
'男'
},
          
new 
Person(){ Name=
"张三3"
,Age=19, Gender=
'男'
},
          
new 
Person(){ Name=
"张三4"
,Age=19, Gender=
'男'
},
          
new 
Person(){ Name=
"张三5"
,Age=19, Gender=
'男'
},
          
new 
Person(){ Name=
"张三6"
,Age=19, Gender=
'男'
},
      
};
      
using 
(FileStream file =
          
new 
FileStream(
"xml.xml"
, FileMode.Create, FileAccess.Write))
      
{
          
XmlSerializer ser =
new 
XmlSerializer(
typeof
(List<Person>));
          
ser.Serialize(file, perList);
      
}

 --------------------------

XmlDocument dom=new XmlDocument(); dom.LoadXml(字符串); dom.save(文件名);

转载自:

 

转载于:https://www.cnblogs.com/shuai7boy/p/5686417.html

你可能感兴趣的文章
Android自带样式
查看>>
iSCSI 原理和基础使用
查看>>
Gym101350 J Lazy Physics Cat
查看>>
Java读取文件方法大全
查看>>
解决mysql无法显示中文/MySQL中文乱码问号等问题
查看>>
CentOS 7.2 配置mysql5.7
查看>>
第一次写博客用来记录自己的工程师生涯。
查看>>
python输出转义字符
查看>>
java基础43 IO流技术(输入字节流/缓冲输入字节流)
查看>>
ASP.NET那点不为人知的事(四)
查看>>
☆ [HNOI2012] 永无乡 「平衡树启发式合并」
查看>>
git 常用命令
查看>>
Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验,使用消息资源文件对消息国际化...
查看>>
ES6--4.解构赋值
查看>>
CCF系列之图像旋转(201503-1)
查看>>
edit.h 再转换到 VS2010 的问题
查看>>
POJ 3134 Power Calculus ★(记录状态的BFS)
查看>>
POJ 3678 Katu Puzzle(POJ 六道2-SAT之一)
查看>>
面向对象初识
查看>>
LeetCode: Find All Duplicates in an Array
查看>>