最近在学读取文件
目录
- 介绍
- 特点
- 结构
- XML的语法规则
- XML 命名规则
- C#操作XML
- 新建
- 读取
- 第一种
- 第二种
- 第三种
- 读取属性
介绍
XML (可扩展标记语言,eXtensible Markup Language) 是一种标记语言,它被设计用来传输和存储数据。
特点
- 可扩展性:由于 XML 的语法灵活,可以通过定义新的标记和属性来扩展其功能。
- 可读性:XML 的语法结构使其易于阅读和理解。
- 平台无关性:XML 可以在不同的平台上被处理和解析,如 Windows、Linux、MacOS 等。
- 编码规范:XML 规定了严格的语法和编码规范,确保数据的正确解析。
结构
一个简单的XML文档展示:
第一行是 XML 声明,它定义 XML 的版本和所使用的编码),然后是根元素,然后是根元素的子元素(当然,可以继续嵌套)
XML的结构由标签、元素、属性和文本组成。
-
标签(tag):以尖括号(< >)包围的单词或词组,用来起始和结束元素。
-
元素(element):指标签包含的整个内容。元素通常由开始标签和结束标签组成,有时也可以是自封闭的标签。
-
属性(attribute):定义在开始标签内的附加信息。属性是由名称和值组成的,它们用空格隔开。
-
文本(text):元素内部不包含标签的部分。文本可以包含实际的数据或者说明信息。
XML的语法规则
- XML文档必须有一个根元素,该元素是所有其他元素的父元素。
- XML元素的开始标签和结束标签要成对出现。
- XML标签名严格区分大小写。
- XML属性必须在开始标签中定义,并且属性名和属性值必须用等号(=)分隔。
- XML属性值必须用引号(" 或 ')括起来。
- XML的注释 < !-- 这是注释内容 – >。
- XML文档必须符合XML规范,即必须包含声明。
XML 命名规则
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
C#操作XML
新建
-
添加—>类
-
选择XML文件->输入一个名称->点击添加
-
输入内容就可以了!!
<?xml version="1.0" encoding="utf-8" ?>
<person>
<person p="man">
<name>LiHua</name>
<age>18</age>
<height>172</height>
</person>
<person p="woman">
<name>Ling</name>
<age>18</age>
<height>168</height>
</person>
</person>
有了这个XML文件之后,接下来,我们可以对它进行一些操作了!!
读取
第一种
代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace _02_XML操作
{
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("Person.xml");
XmlNode root = xmlDoc.ChildNodes[1];
XmlNodeList personList = root.ChildNodes;
foreach (XmlNode person in personList)
{
foreach (XmlNode node in person.ChildNodes)
{
Console.WriteLine(node.Name + ":" + node.InnerText);
}
}
}
}
}
运行结果:
第二种
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace _02_XML操作
{
class Program
{
static void Main(string[] args)
{
List<Person> list = new List<Person>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(File.ReadAllText("Person.xml"));
XmlNode root = xmlDoc.ChildNodes[1];
XmlNodeList personList = root.ChildNodes;
foreach(XmlNode person in personList)
{
Person obj = new Person();
foreach(XmlNode node in person.ChildNodes)
{
if (node.Name == "name")
{
obj.name = node.InnerText;
}else if (node.Name == "age")
{
obj.age = Int32.Parse(node.InnerText);
}else if (node.Name == "height")
{
obj.height = Int32.Parse(node.InnerText);
}
}
list.Add(obj);
}
foreach(Person p in list)
{
Console.WriteLine(p.name + "," + p.age + "," + p.height);
}
}
}
}
运行结果:
第三种
代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace _02_XML操作
{
class Program
{
static void Main(string[] args)
{
List<Person> list = new List<Person>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(File.ReadAllText("Person.xml"));
XmlNode root = xmlDoc.ChildNodes[1];
XmlNodeList personList = root.ChildNodes;
foreach(XmlNode person in personList)
{
Person obj = new Person();
XmlElement nameEle = person["name"];
obj.name = nameEle.InnerText;
XmlElement ageEle = person["age"];
obj.age = Int32.Parse(ageEle.InnerText);
XmlElement heightEle = person["height"];
obj.height = Int32.Parse(heightEle.InnerText);
list.Add(obj);
}
foreach(Person p in list)
{
Console.WriteLine(p.name + "," + p.age + "," + p.height);
}
}
}
}
运行结果:
读取属性
代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace _02_XML操作
{
class Program
{
static void Main(string[] args)
{
List<Person> list = new List<Person>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(File.ReadAllText("Person.xml"));
XmlNode root = xmlDoc.ChildNodes[1];
XmlNodeList personList = root.ChildNodes;
foreach(XmlNode person in personList)
{
Person obj = new Person();
//读取属性
XmlAttributeCollection attriCol = person.Attributes;
XmlAttribute attri = attriCol["p"];
obj.p = attri.Value;
XmlElement nameEle = person["name"];
obj.name = nameEle.InnerText;
XmlElement ageEle = person["age"];
obj.age = Int32.Parse(ageEle.InnerText);
XmlElement heightEle = person["height"];
obj.height = Int32.Parse(heightEle.InnerText);
list.Add(obj);
}
foreach(Person p in list)
{
Console.WriteLine(p.p+","+p.name + "," + p.age + "," + p.height);
}
}
}
}
运行结果:
💦更多内容请前往主页置顶或点击链接直达:
【unity3D】游戏开发专栏的目录
【VR】VR开发专栏的目录