为何称XML不支持数组?明明存在<array>标签
为什么说“XML不支持数组”?
很多对比XML和JSON的内容会提到JSON支持数组而XML不支持,这里的“不支持”指的是XML没有原生的数组数据类型,具体可以从这几点理解:
- JSON的数组是语言级别的内置结构,用
[]包裹、逗号分隔元素,语法和语义都是明确的,比如["apple", "banana", "orange"]一看就知道是一组同类型元素的集合。 - XML本身没有“数组”这个原生概念,所有结构都靠元素嵌套实现。你看到的
<array>标签只是开发者自定义的约定——比如你举的Android资源文件示例:
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
这里的<array>和<item>只是用来模拟数组结构的自定义标签,换成<list>、<item-group>也完全可行,只要开发者之间达成约定就行,并不是XML标准里自带的数组类型。
- XML的这种特性会导致语义歧义:如果只写
<item>1</item><item>2</item>,没人能直接判断这是数组的元素还是两个独立的元素;但JSON里[1,2]的语义是绝对明确的。
内容的提问来源于stack exchange,提问作者Ahmed Ibrahim
相关产品推荐
相关产品推荐

