XML,全称为可扩展标记语言(eXtensible Markup Language),是一种用于描述、传输和存储数据的语言。它被设计用来传输和存储数据,与 HTML 不同,XML 的主要目的不在于显示数据,而是强调数据的结构性。XML 使用类似 HTML 的标签表示数据的结构和其他信息。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element1>内容1</element1>
<element2 attribute1="value1">内容2</element2>
<element3 attribute2="value2">
<subelement>子内容</subelement>
</element3>
</root>
//1.读取XML文件
//XmlDocument xml = new XmlDocument();
//读取文本方式1-xml.LoadXml(传入xml文本字符串)
//读取文本方式2-xml.Load(传入路径)
//2.读取元素和属性
//获取单个节点 : XmlNode node = xml.SelectSingleNode(节点名)
//获取多个节点 : XmlNodeList nodeList = xml.SelectNodes(节点名)
//获取节点元素内容:node.InnerText
//获取节点元素属性:
//1.item.Attributes["属性名"].Value
//2.item.Attributes.GetNamedItem("属性名").Value
//通过迭代器遍历或者循环遍历XmlNodeList对象 可以获取到各单个元素节点
XmlDocument doc = new XmlDocument();
doc.Load("example.xml");
XmlNode root = doc.DocumentElement;
XmlNode node = root.SelectSingleNode("//player");
string name = node.Attributes["name"].Value;
int age = int.Parse(node.Attributes["age"].Value);
Debug.Log("Name: " + name);
Debug.Log("Age: " + age);
//关键类 XmlDocument 用于创建节点 存储文件
//关键类 XmlDeclaration 用于添加版本信息
//关键类 XmlElement 节点类
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("game");
XmlElement player = doc.CreateElement("player");
player.SetAttribute("name", "John");
player.SetAttribute("age", 25);
root.AppendChild(player);
doc.AppendChild(root);
doc.Save("example.xml");
XMLTextReader 这个类设计的目的就是从XML文件中快速的读取数据,而对系统资源(主要包括内存和处理器时间)不做很高的要求。
static void XmlTextReaderTest()
{
XmlTextReader textReader = new XmlTextReader(filePath3);
textReader.WhitespaceHandling = WhitespaceHandling.None;
while (textReader.Read())
{
if (textReader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "player")
{
string name = reader.GetAttribute("name");
int age = int.Parse(reader.GetAttribute("age"));
Debug.Log("Name: " + name);
Debug.Log("Age: " + age);
}
}
if (textReader.NodeType == XmlNodeType.Text)
{
}
if (textReader.NodeType == XmlNodeType.EndElement)
{
}
}
//读取完毕后要记得关闭流,否则会占用文档,无法被其它线程打开
textReader.Close();
}
XmlTextWriter writer = new XmlTextWriter("example.xml", System.Text.Encoding.UTF8);
writer.WriteStartElement("game");
writer.WriteStartElement("player");
writer.WriteAttributeString("name", "John");
writer.WriteAttributeString("age", 25);
writer.WriteEndElement(); // player
writer.WriteEndElement(); // game
writer.Close();