2026/1/8 13:18:32
网站建设
项目流程
做网站go和python,管理咨询公司起名,wordpress 不显示工具栏,网站建设平台选用XML概述
一、XML由来
(一)什么是XML?
咱们先拆解名字:XML是“可扩展的标记语言”,核心就两个关键词——标记语言 + 可扩展。
1. 先懂“标记语言”:像给数据贴标签
你肯定见过HTML(就是做网页的那个),它和XML是“亲戚”,都是用这种标签来包裹内容的,比如…XML概述一、XML由来(一)什么是XML?咱们先拆解名字:XML是“可扩展的标记语言”,核心就两个关键词——标记语言+可扩展。1. 先懂“标记语言”:像给数据贴标签你肯定见过HTML(就是做网页的那个),它和XML是“亲戚”,都是用这种标签来包裹内容的,比如:HTML里写p我是段落/p,p就是固定的“段落标签”;XML也这么写,但标签能自己定,比如想存水果信息,就可以写苹果红富士/苹果,想存快递信息,就写快递单号123456/快递单号。简单说:标记语言就是用自定义/固定的标签,把数据“框”起来,让数据结构清晰,不管是人还是电脑都能看懂。2. “可扩展”:标签想怎么定就怎么定(这是XML的核心)HTML的标签是死的,比如只能用div``p``img这些,改不了;但XML的标签完全由你说了算——你做电商就定商品``价格,做通讯录就定姓名``手机号,没有任何限制,这就是“可扩展”。3. 版本的事儿:不用管1.1,就学1.0就行XML是由W3C(后面会说)制定的,1998年出了1.0版本,2004年又出了1.1版本。但1.1有个大坑:和1.0不兼容(就像安卓APP装不上苹果手机),所以没人用;同年W3C又更了1.0的第三版,这版兼容老版本,也是现在所有人都在用的,咱们学这个就行。补充:XML的“出身”它是SGML(标准通用标记语言)的“简化版”,SGML太复杂,普通人用不上,所以就简化出XML,专门用来做结构化的数据处理。(二)W3C是个啥组织?不是官方,但说话超管用1. 基本情况:Web界的“行业老大”W3C翻译过来是“万维网联盟”,1994年10月成立的,不是政府官方机构(比如工信部),更像是全球互联网领域的“行业协会”——聚集了各大科技公司(谷歌、微软、阿里等)、专家,一起研究Web技术。2. 核心工作:制定Web的“规矩”它的目标是把互联网的技术统一起来,让不同网站、不同系统之间能互通。这么多年下来,已经出了90多份技术规范,比如咱们熟悉的HTML、XML、CSS、HTTP这些,都是它定的“规矩”。3. 标准的“含金量”:虽叫“建议”,实则是“行业法则”W3C自己说,它发布的规范只是“推荐标准”(相当于“建议大家这么做”),但因为它的权威性,这些“建议”最后都成了全世界公认的标准——比如你写HTML不按W3C的规范来,浏览器就可能显示不正常,所有开发者都得按它的规矩来。W3C就是Web技术的“定规矩的人”,不是官方,但全行业都听它的。二、XML的作用XML(可扩展标记语言)的核心作用可总结为三大核心场景,且各有明确的价值定位:配置文件(最主流用途):作为程序/系统的配置载体,凭借其结构化、可读性强、可扩展的特性,能清晰定义程序的参数、模块关联、运行规则等(如Java的Spring配置、Tomcat服务器配置),无需修改代码即可调整程序行为,降低维护成本。跨语言数据交换:作为通用的数据格式,独立于编程语言和平台,可在不同语言(如Java、Python、C#)、不同系统间标准化传输和解析数据,是早期异构系统数据交互的核心媒介(如WebService接口数据传输)。轻量级数据存储:以结构化标签组织数据,可作为小型、简单场景的“轻量数据库”,直接存储少量结构化数据(如本地应用的用户信息、简单业务数据),无需依赖复杂数据库系统,实现快速存取和管理。XML的核心价值在于结构化、可扩展、跨平台,既适配程序配置的灵活调整需求,也满足异构系统的数据互通,还能支撑简单场景的数据存储,是兼具可读性与通用性的标记语言。三、XML与HTML比较第一点:HTML是“固定菜单”,XML是“空白笔记本”HTML:元素固定=餐厅里的“固定菜单”HTML的元素(比如div、p、img、h1)就像餐厅里印好的固定菜单,菜名都是定死的:只能点“红烧肉”“鱼香肉丝”“拍黄瓜”,没有的菜你点不了,老板也不会给你做。比如写HTML只能用这些固定标签:!-- 只能用HTML规定好的标签,不能自己造 --h1我的首页/h1!-- 一级标题,固定标签 --p这是一段文字/p!-- 段落,固定标签 --imgsrc="图片.jpg"!-- 图片,固定标签 --哪怕你想表达“我的宠物猫”,也只能用现有标签凑:p我的宠物猫:橘猫/p,没法自己造一个宠物猫标签——HTML不认自定义的标签,写了也白写。XML:自定义元素=空白笔记本,想写啥就写啥XML的元素完全是自定义的,就像你拿了一本空白笔记本,想写什么标题、什么分类,全由你定。比如你想记录宠物信息,直接造标签就行:!-- 自己定义宠物猫、名字、品种这些标签,XML都认 --宠物记录宠物猫名字橘子/名字品种橘猫/品种年龄2岁/年龄/宠物猫宠物狗名字旺财/名字品种金毛/品种年龄3岁/年龄/宠物狗/宠物记录哪怕你想造打工人``工资``摸鱼时长这些奇奇怪怪的标签,XML也完全接受——它不管你标签叫啥,只认“你定义的结构”,这就是“自定义元素”的核心。第二点:HTML是“自带翻译的说明书”,XML是“无翻译的外文手稿”HTML:浏览器自动解析=说明书有自带的翻译,拿过来就能看懂HTML是给浏览器(Chrome、Edge)用的,浏览器天生就认识所有HTML标签,能自动解析并展示成网页:看到h1就知道要显示成大号粗体标题;看到img就知道要加载并显示图片;你只需要写HTML代码,打开浏览器就能直接看到效果,不用自己写任何“解析代码”。就像你拿到一本带中文翻译的英文说明书,不用自己查字典,直接就能看懂怎么用。XML:解析器要自己写=拿到纯外文手稿,得自己学外语翻译XML的标签是你自定义的,没有任何工具天生认识这些标签——比如你定义了宠物猫,电脑根本不知道这是啥意思,得你自己写“解析代码”告诉电脑:“找到宠物猫标签,把里面的名字内容取出来,显示在屏幕上”。就像你拿到一本纯法语的手稿,没有翻译,得自己学法语、自己逐字翻译才能看懂内容。比如想读取上面XML里的“橘子”,得写解析代码(类似之前讲的XML解析逻辑),告诉程序:“先找宠物记录,再找里面的宠物猫,再取名字里的文字”——这部分代码得自己写,没有现成的“通用解析器”直接用。第三点:HTML是“专用工具(菜刀)”,XML是“通用工具(瑞士军刀)”HTML:只能做网页=菜刀只能切菜HTML的唯一使命就是“描述网页的结构和内容”,让浏览器能展示网页——它除了做网页,啥也干不了。比如你想记录物流信息、存储订单数据、传递接口数据,用HTML就完全不合适,因为它的标签都是为“网页展示”设计的,没法清晰表达这些复杂的结构化数据。就像菜刀只能用来切菜,你想用它拧螺丝、开啤酒、剪绳子,根本做不到。XML:能做的事多=瑞士军刀能切菜、拧螺丝、开啤酒XML因为能自定义标签、能表达结构化信息,用途特别广:存储数据:比如电商平台存订单(订单号、商品、收货人);传递数据:比如不同系统之间交换数据(比如物流系统给电商系统传快递信息);配置文件:比如框架的配置(Spring的xml配置文件);描述数据:比如定义接口返回的格式(告诉对方“我返回的用户ID是啥,手机号是啥”)。就像瑞士军刀,既能切菜(类似HTML做简单展示),还能拧螺丝、开啤酒、剪绳子,适配各种场景。总结一下特性HTMLXML元素规则标签固定(只能用规定好的)标签自定义(想造啥标签就造啥)解析方式浏览器自动解析(不用自己写代码)需自己写解析器(告诉程序标签啥意思)适用场景仅用于制作网页(专用)存储/传递/配置数据等(通用)一句话:HTML是“网页专属的固定格式”,拿来就能做网页;XML是“万能的自定义格式”,能装各种数据,但得自己写代码解析。四、XML和properties(属性文件)比较第一点:属性文件是“购物清单”,XML是“家庭账本”属性文件(properties):只能存“平面信息”平面信息就像只有“键-值”的简单清单,只能一对一,没法分层、没法有复杂结构。比如你写个.properties文件,内容只能是这样:# 购物清单.properties 苹果=5个 牛奶=2箱 面包=3袋它的特点是:只有“名字=值”这一种格式,所有内容都在同一层,没法表达“谁买的、什么时候买的、哪个超市买的”这些关联信息——比如你想说明“妈妈买的苹果,在沃尔玛买的,花了20块”,用properties就只能硬凑:妈妈_苹果_超市=沃尔玛 妈妈_苹果_价格=20元又乱又不直观,本质还是“一对一”的扁平结构,没法体现“苹果属于妈妈的采购、关联超市和价格”这种层级/关联关系。XML:能存“结构化信息”结构化信息就像带分类、分层、关联的账本,能把复杂关系说清楚。还是上面的例子,XML可以这么写:!-- 家庭账本.xml --采购记录采购人员妈妈/采购人员商品名称苹果/名称数量5个/数量购买地点沃尔玛/购买地点价格20元/价格/商品商品名称牛奶/名称数量2箱/数量购买地点家乐福/购买地点价格40元/价格/商品/采购记录你看:有层级:“商品”是“采购记录”的子内容,“名称/数量”又是“商品”的子内容;有结构:能清晰关联“妈妈买的苹果”对应的超市和价格,还能批量放多个商品;能扩展:想加“购买时间”,直接在商品里加一行时间2025-12-16/时间就行,不影响整体结构。简单说:properties只能记“啥是啥”,XML能记“啥属于啥、啥关联啥”。第二点:解析properties是“查字典”,解析XML是“拆快递”解析properties:用Properties类=查现成字典解析就是“读取文件里的内容并使用”。Java里读properties文件,就像查一本按“拼音首字母排序的字典”,工具给你做好了:// 读properties的核心代码(超简单)Propertiesprop=newProperties();// 加载文件prop.load(newFileInputStream("购物清单.properties"));// 直接拿值,一行搞定String苹果数量=prop.getProperty("苹果");System.out.println(苹果数量);// 输出:5个Properties类是Java专门为属性文件做的“专属工具”,不用你操心怎么拆内容,直接“问它要啥,它就给啥”,就像你查字典,翻到“苹果”那页,直接看后面的解释就行。解析XML:复杂=拆带多层包装的快递XML因为有层级、有结构,解析它就像拆一个层层打包的快递:先拆最外层的箱子(采购记录);再拆里面的小盒子(采购人员、商品);每个小盒子里还有更小的包装(名称、价格);要是有多个商品,还得一个个拆、一个个数。而且Java里没有“一键读XML”的简单类,你得用DOM、SAX、JDOM这些解析方式,写一堆代码:// 解析XML的简化代码(实际更复杂)DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();Documentdoc=builder.parse(newFile("家庭账本.xml"));// 找商品节点NodeListgoodsList=doc.getElementsByTagName("商品");// 遍历每个商品,再找里面的名称、价格for(inti=0;igoodsList.getLength();i++){Nodegoods=goodsList.item(i);ElementgoodsElement=(Element)goods;String名称=goodsElement.getElementsByTagName("名称").item(0).getTextContent();String价格=goodsElement.getElementsByTagName("价格").item(0).getTextContent();System.out.println(名称+":"+价格);}相当于你没有“现成字典”,得自己动手把快递一层一层拆开来,才能拿到里面的东西,步骤多、代码也多。特性properties属性文件XML文档存储能力只能存“键=值”的扁平信息(简单)能存分层、关联的结构化信息(复杂)解析难度用Properties类一键读取(超简单)要写一堆解析代码(麻烦)适用场景简单配置(比如数据库密码、端口号)复杂数据(比如订单、接口返回数据)一句话:简单的“一对一”配置用properties(省事),需要分层/关联的复杂数据用XML(能装),但解析XML得多费点劲。XML语法XML的语法核心就一个:严格、规整、有统一规则,不像HTML能“随便写”(比如少个闭合标签也能显示),XML只要语法错一点,程序就解析不了。一、XML的基本骨架(必须有!)一个完整的XML文档,得有“声明+根元素”这两个核心,少一个都不合法,先看最基础的完整例子:?xml version="1.0" encoding="UTF-8"?!-- XML声明 --通讯录!-- 根元素 --联系人!-- 子元素 --姓名张三/姓名手机号13800138000/手机号地址北京市朝阳区/地址/联系人联系人姓名李四/姓名手机号13900139000/手机号地址上海市浦东新区/地址/