目录
一、新建一个XML文档
打开VS→另存为→格式选择xml
二、了解xml的语法规则
1.开头固定
就是开头必须有这一行,当然,里面的版本和编码格式,如果你懂的话,也可以自己改其他的。
<?xml version="1.0" encoding="utf-8"?>
注释:
你是哪个版本的xml? 答:我是1.0版本的
你打算用什么编码格式? 答:utf-8吧
2.最简单的方式
下面你可以按照格式随便写。
例:我现在想做一个答题软件,我需要搞好多题目。
我们需要两个<>,把你想要的信息包起来,<>里面填绝大部分单词都可以,开头直接写单词,结尾单词前带个/
例:
<Item>约翰·提托</Item>
<apple>约翰·提托</apple>
<?xml version="1.0" encoding="utf-8"?>
<AllQuestion>
<Question>
<Problem>命运石之门男主角的网名是?</Problem>
<Answer>凤凰院凶真</Answer>
<Item>约翰·提托</Item>
<Item>凤凰院凶真</Item>
<Item>栗悟饭和龟派气功</Item>
<Item>凤凰院胸针</Item>
</Question>
<Question>
<Problem>傅里叶级数是傅里叶在研究哪种物理现象时提出的?</Problem>
<Answer>热传导</Answer>
<Item>量子力学</Item>
<Item>热传导</Item>
</Question>
</AllQuestion>
我这里这么写是,问题用Problem
答案用Answer
选项用Item
每个问题用Question隔开
除此之外,必须要明确整个文件,开头和结尾在哪?所以最外面也需要包一层,我这里用的是AllQuestion,以上的单词你都可以自己改。
具体有些犯忌的条件请参考:XML介绍 、XML约束 、XML解析(特别详细,跟着看一遍就懂了)_肥兄的博客-优快云博客_xml详解
三、用Unity读取XML
xn 代表一个结点
xn.Name;//这个结点的名称
xn.Value;//这个结点的值
xn.ChildNodes;//这个结点的所有子结点
xn.ParentNode;//这个结点的父结点
例:如果我想读到上面的“命运石之门男主角的网名是?”和“傅里叶级数是傅里叶在研究哪种物理现象时提出的?”这两个问题。
1.需要读取XML这个文件,我把这个文件放在streamingAssets里面,这个文件我起名叫题目
则,代码为:
XDocument xDocument
= XDocument.Load("file://"+Application.streamingAssetsPath+"//题目.xml");
//太长了,我就回车了
2.我需要获取这个文件内容,从开头到结尾
就是前面讲过的,上面这句,这里面的AllQuestion也叫作根目录。
//xml里面有根目录,先把根目录挑出来
XElement root = xDocument.Root;
//把根目录第一层中所有的标志都提取出来
IEnumerable ienumerable = root.Elements();
//先遍历第一层根目录
foreach (XElement element in ienumerable)
{
//先遍历第二层根目录
foreach (XElement child in element.Elements()) {
//把每一部分的内容挑出来
if (child.Name == "Problem")
{
Debug.Log(child.Value); //这个child.Value就是我们的问题
}
}