其他资料
嘿, 各位好, 这里是底龙, 蔚蓝制图中有一个非常常见的, 基本绕不开的东西, 叫做XML, 不管你是在地图添加砖块, 还是在给自己的实体换皮, 几乎总是能遇到它.
每次遇到这个东西, 就有一些 mapper 会出现一些这样那样的报错, 其实很多时候他们并不是没跟着教程做, 只是有一些细枝末节的地方他们因为不了解 XML 本身的性质, 没有办法自己查错误的根源, 因此只能寄希望于群友解决问题.
那么今天底龙会结合制图中的常见领域来解释一下相关 XML 文件的应用.
XML 基本格式
首先, 在开始讲其他东西之前, 我们当然需要了解一下, XML 是个什么东西.
本文不是专业论述文章, 不会跟你解析 XML 的历史和优缺点等等, 有兴趣的自行去了解.
简单来讲, XML文件就像是一个贴有各种标签内容的罐子, 而罐子里面可以继续放很多的标签.
每一个罐子的长相大体分为两种:
1 2 3 | |
和
1 | |
其中, Container 代表这个“罐子”的名字是什么, 在不同的场景下, Container 的名字会有所不同.
也许你没有学过任何代码, 但是看上面的对应关系, 加上底龙将这两个东西放在一起并列讲解, 你应该不难猜出这些“罐子”的两个基本特点:
- 如果采用第一种写法, 那么必须有一个带有“罐子”名字的东西, 以类似于
<Container>的形式开头, 之后以相同名字采用类似于</Container>的形式结尾. - 第二种写法似乎是第一种写法的简写?
如果你能发现上面的规律, 那么恭喜, 你的猜测全部是正确的!
第二种写法: 简写写法
正常情况底龙应该从第一种开始讲起, 但是第二种因为写法简单, 而且本身可以有别的理解, 因此这里先行描述.
前文中, 我们提到, XML 的代码可以理解为一个个的“罐子”, 作为一个“罐子”, 他们就有自己的格式要求, 而第二种写法, 就是这个“罐子”最简单的写法, 同时从根源上理解, 他代表的其实是一个, 没有任何东西在里面的罐子.
你可以在它的上面贴标签, 但是它的里面却装不了任何东西.
也就是说, 你可以认为这种写法, 其实就是一个能放进“罐子”里面的“物品”, 它本身能带一些标签.
比如说, 我创建一个名字叫做 Cookies 的“饼干罐”, 那么我一般往里面肯定想放一些“饼干”, 在 XML 的理解中, 每个饼干(Cookie)就长这个样子:
1 | |
有些可能是草莓味的, 有些可能是巧克力的, 那么在 XML 的理解下, 这两个“饼干”就应该各自价格标签, 变成这个样子:
1 2 | |
然后我就可以把这两行代码放进代表 Cookies 的“罐子”里面就好了, 那么“罐子”怎么表示呢? 看下面讲解的第一种写法.
第一种写法: 完整写法
第一种写法实际上是 XML 这个“罐子”的完整写法, 将罐子的名字 Container 以 <Container>开头, 之后在后面的行数以 </Container> 结尾, 注意, 结尾的 Container前面有一个斜杠.
很多时候这个“罐子”并不是只有一个名字, 我们根据规定可能会需要给它贴几个标签, 那么给罐子本身贴标签, 我们只需要在开头的名字后面, 增加标签名字和标签内容就好啦, 比如说, 我的“罐子”叫 Container, 我想贴一个名字叫 TagName 的标签, 标签上写“MyTag”, 那么这个“罐子”的最后形式就应该是:
1 2 | |
在罐子里面, 我们就可以添加自己想要的东西了, 例如, 我们可以在“罐子”里面再放一个罐子
1 2 3 4 5 | |
你也可以加点一般的东西, 这里我们试试第二种写法, 比如我需要丢一个名字叫 Item 的物品进去, 然后这个 Item 上还挂了个标签, 标签名字叫 ItemTag, 标签内容写着”SoyBean”.
1 2 3 4 5 6 | |
有了开头和结尾两者像这样对应, 这部分的代码才能形成一个“罐子”.
找找茬
下面列举几个错误写法, 尝试找找漏洞?
写法混用
1 2 3 | |
注意到了吗, 这段代码结尾有 </Player>, 开头却是 <Player … />, 这里显然是用完整写法, 所以将第一行最后的斜杠 / 去掉即可
标签未配对
1 2 3 | |
这段代码似乎是想做一个名字叫做“Tileset”的容器, 但是, 没有用 </Tileset> 兜底, 导致这个“容器”压根就没封闭起来.